比赛 noip2016普及练习1 评测结果 AAAAAAAAA
题目名称 回家 最终得分 100
用户昵称 サイタマ 运行时间 0.016 s
代码语言 C++ 内存使用 0.96 MiB
提交时间 2016-11-03 20:21:56
显示代码纯文本
#include<fstream>
using namespace std;
ifstream cin("comehome.in");
ofstream cout("comehome.out");
int d[55][55][55],dis[55][55],p,i,j,k,a1,b1,o,mi=999999;
char a,b,r;
int main()
{
	for(i=1;i<=56;i++)
	{
		for(j=1;j<=56;j++)
		{
			if(i!=j)
				dis[i][j]=999999;
		}
	}
	cin>>p;
	for(i=1;i<=p;i++)
	{
		cin>>a>>b;
		if(a<97)
			a1=a-'A'+1;
		else
			a1=a-'a'+27;
		if(b<97)
			b1=b-'A'+1;
		else
			b1=b-'a'+27;
		cin>>o;
		dis[b1][a1]=dis[a1][b1]=min(o,dis[a1][b1]);\
	}
	for(k=0;k<=52;k++)
		for(i=1;i<=52;i++)
			for(j=1;j<=52;j++)
			{
				if(k==0)
				{
					d[k][i][j]=dis[i][j];
				}
				else
					d[k][i][j]=min(d[k-1][i][j],d[k-1][i][k]+d[k-1][k][j]);
			}
	for(i=1;i<=25;i++)
	{
		if(d[52][i][26]<mi)
		{
			mi=d[52][i][26];
			r=char('A'-1+i);
		}
	}
	cout<<r<<' '<<mi<<endl;
	cin.close();
	cout.close();
	return 0;
}