#22分求调#
查看原帖
#22分求调#
1381844
yinziye楼主2024/9/16 16:24

把错误数据下到本地能过,在洛谷里读了个(ASCII 0)

#include<bits/stdc++.h>
#define P 10005
using namespace std;
int p, m[P], vis[P], dis[P], cnt;
int a[P][P];
priority_queue <int, vector<int>, greater<int> > q;
void djst(int s){
	memset(dis, 0x3f, sizeof(dis));
	dis[s]=0;
	q.push(s);
	while(!q.empty()){
		int u=q.top();
		q.pop();
		if(vis[u]) continue;
		vis[u]=1;
		for(int i=65;i<=122;i++){
			if(a[u][i]!=0x3f && i!=90){
				if(!vis[i] && dis[u]+a[u][i]<dis[i]){
					dis[i] = dis[u]+a[u][i];
					q.push(i);
				}				
			}
		}
	}
}
int main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	scanf("%d",&p);
	memset(a, 0x3f, sizeof(a));
	for(int i=1;i<=p;i++){
		char b, c;
		int w;
		cin>>b>>c>>w;
		int u=int(b), v=int(c);
		m[++cnt]=u, m[++cnt]=v;
		a[u][v]=min(a[u][v], w);
		a[v][u]=min(a[v][u], a[u][v]);
//		cout << a[u][v] <<" "<< a[v][u]<<endl;
	}
	int minstep=0x3f3f3f3f, id=0;
	djst(90);
	for(int i=1;i<=cnt;i++)
		if(char(m[i])>='A' && char(m[i])<='Y' && minstep>dis[m[i]])
			minstep=dis[m[i]], id=m[i];
	cout<<char(id)<<" "<<minstep<<endl;
	return 0;
}
2024/9/16 16:24
加载中...