#5这个点WA了
附上代码:
#include <bits/stdc++.h>
using namespace std;
int p,dis[60][60],minn=0x3f3f3f3f,n;
void floyd()
{
for(int k=1;k<=52;k++)
{
for(int i=1;i<=52;i++)
{
for(int j=1;j<=52;j++)
{
if(dis[i][j]>dis[i][k]+dis[k][j])
{
dis[i][j]=dis[i][k]+dis[k][j];
}
}
}
}
}
int main()
{
cin>>p;
memset(dis,0x3f,sizeof dis);
for(int i=1;i<=26;i++) dis[i][i]=0;
while(p--)
{
char u,v;
int w;
cin>>u>>v>>w;
if(u>='a'&&u<='z') u-=70;
else u-=64;
if(v>='a'&&v<='z') v-=70;
else v-=64;
dis[u][v]=min(dis[u][v],w);
dis[u][v]=min(dis[u][v],w);
}
floyd();
for(int i=1;i<=25;i++)
{
if(dis[i][26]<minn)
{
n=i;
minn=dis[i][26];
}
if(dis[26][i]<minn)
{
n=i;
minn=dis[26][i];
}
}
cout<<char(n+64)<<" "<<minn;
return 0;
}