记录编号 342521 评测结果 AAAAAAAAA
题目名称 [USACO 2.4.4]回家 最终得分 100
用户昵称 Gravatar*柯南* 是否通过 通过
代码语言 C++ 运行时间 0.022 s
提交时间 2016-11-08 16:29:08 内存使用 0.26 MiB
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstdlib>
#include <cstring>
using namespace std;

const int maxn=60+5;
int a[maxn][maxn];
int n,x;
char ch1,ch2;
int min1=INT_MAX,min2=0;
char ch3;

int main()
{
	freopen("comehome.in","r",stdin);
	freopen("comehome.out","w",stdout);
	
	for(int i=1;i<maxn;i++)
	for(int j=1;j<maxn;j++)
	{
		if(i!=j) a[i][j]=INT_MAX/2;
	}
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>ch1>>ch2>>x;
		if(x<a[ch1-'A'+1][ch2-'A'+1])
		{
			a[ch1-'A'+1][ch2-'A'+1]=x;
			a[ch2-'A'+1][ch1-'A'+1]=x;
		}
	}
	for(int k=1;k<maxn;k++)//floyd
	for(int i=1;i<maxn;i++)
	for(int j=1;j<maxn;j++)
	{
		if(a[i][j]>a[i][k]+a[k][j])
			a[i][j]=a[i][k]+a[k][j];
	}
	for(int i=1;i<=25;i++)
	{
		if(a[i][26]<min1)
		{
			min1=a[i][26]; min2=i;
		}
	}
	ch3=min2+'A'-1;
	cout<<ch3<<' '<<min1<<endl;
	
	return 0;
}