22分求调
查看原帖
22分求调
1286930
LYQqwq楼主2025/2/5 18:52
#include<bits/stdc++.h>
using namespace std;
const int maxn=105;
const int inf=999999999;
int n;
int mp[maxn][maxn],vis[maxn],dis[maxn];
void init(){
	for(int i=0;i<=100;i++)
		for(int j=0;j<=100;j++)
			mp[i][j]=inf;
	for(int i=0;i<=100;i++){
		dis[i]=inf;
		mp[i][i]=0;
	}
}
void dijkstra(int s){
	vis[s]=1;
	dis[s]=0;
	for(int i=1;i<=100;i++)
		dis[i]=min(dis[i],mp[s][i]);
	for(int i=1;i<100;i++){
		int k=0;
		for(int j=1;j<=100;j++)
			if(!vis[j]&&dis[j]<dis[k])
				k=j;
		vis[k]=1;
		for(int j=1;j<=100;j++)
			if(vis[j]&&dis[j]>dis[k]+mp[k][j])
				dis[j]=dis[k]+mp[k][j];
	}
}
int main(){
	scanf("%d",&n);
	init();
	for(int i=1;i<=n;i++){
		char s1[10],s2[10];
		int w;
		scanf("%s%s%d",s1,s2,&w);
		int minn=min(mp[s1[0]-'A'+1][s2[0]-'A'+1],w);
		minn=min(mp[s2[0]-'A'+1][s1[0]-'A'+1],minn);
		mp[s1[0]-'A'+1][s2[0]-'A'+1]=mp[s2[0]-'A'+1][s1[0]-'A'+1]=minn;
	}
	dijkstra('Z'-'A'+1);
	int ans,minn=inf;
	for(int i='A'+1-'A';i<'Z'+1-'A';i++)
		if(dis[i]<minn){
			minn=dis[i];
			ans=i;
		}
	printf("%c %d\n",ans+'A'-1,minn);
	return 0;
} 
2025/2/5 18:52
加载中...