RT 在此代码下
#include <iostream>
using namespace std;
int dp[60][60];
int n;
int main()
{
//cin>>n; 位置1
for(int i=1;i<=60;i++)
{
for(int j=1;j<=60;j++)
{
dp[i][j]=99999999;
}
}
//cin>>n; 位置2
for(int i=1;i<=n;i++)
{
char x,y;
int a,b,k;
cin>>x>>y>>k;
if('A'<=x&&x<='Z')
{
a=x-'A'+1;
}
else
{
a=x-'a'+1+26;
}
if('A'<=y&&y<='Z')
{
b=y-'A'+1;
}
else
{
b=y-'a'+1+26;
}
dp[a][b]=min(dp[a][b],k);
dp[b][a]=min(dp[b][a],k);
}
for(int k=1;k<=52;k++)
{
for(int i=1;i<=52;i++)
{
for(int j=1;j<=52;j++)
{
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
}
}
}
int ans=99999999;
char c;
for(int i=1;i<26;i++)
{
if(dp[i][26]<ans)
{
ans=dp[i][26];
c=i-1+'A';
}
}
cout<<c<<" "<<ans;
return 0;
}
在dp初始化之前(位置1),洛谷在线IDE 1995ms

在dp初始化之后(位置2),洛谷在线IDE 24ms
