题目描述 https://www.luogu.org/problemnew/show/P1529
把字母转换成数字后,求离Z点最近的奶牛,近似模板题。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int mp[60][60],p;
int main()
{
scanf("%d",&p);
memset(mp,0x7f/3,sizeof(mp));
for(int i=1;i<=55;i++) mp[i][i]=0;
for(int i=1;i<=p;i++)
{
char a,b; int x,y,z;
cin>>a>>b>>z;
if(a>='A'&&a<='Z') x=a-'A'+1+26;
else x=a-'a'+1;
if(b>='A'&&b<='Z') y=b-'A'+1+26;
else y=b-'a'+1;
mp[x][y]=mp[y][x]=min(mp[x][y],z);
}
for(int k=1;k<=52;k++)
for(int i=1;i<=52;i++)
for(int j=1;j<=52;j++)
mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);
int minn=1e9,z;
for(int i=27;i<=51;i++)
if(mp[i][52]<minn)
minn=mp[i][52],z=i;
z='A'+z-27;
cout<<(char)z<<" "<<minn;
return 0;
}