您的位置:首页 > 其它

Usaco2.44Bessie Come Home(floyd)

2013-04-28 10:46 274 查看
floyd之后 枚举找最小就行 会有重边

View Code

/*
ID: shangca2
LANG: C++
TASK: comehome
*/
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#define INF 0x3f3f3f
using namespace std;
int w[110][110];
int main()
{
freopen("comehome.in","r",stdin);
freopen("comehome.out","w",stdout);
int i,j,k,n,d,a,b,m=52;
char c1,c2,c;
cin>>n;
for(i = 0 ; i < m ;i++)
for(j = 0 ; j < m ; j++)
w[i][j] = INF;
for(i = 0 ; i < n ; i++)
{
cin>>c1>>c2>>d;
if(c1>='A'&&c1<='Z')
a = c1-'A';
else
a = c1-'a'+26;
if(c2>='A'&&c2<='Z')
b = c2-'A';
else
b = c2-'a'+26;
if(w[a][b]>d)
{
w[a][b] = d;
w[b][a] = d;
}
}
for(i = 0 ; i < m ; i++)
w[i][i] = 0;
for(i = 0 ; i < m ; i++)
for(j = 0 ; j < m ; j++)
for(k = 0 ; k < m ; k++)
if(w[j][k]>w[j][i]+w[i][k])
w[j][k] = w[j][i]+w[i][k];
int ans = INF;
for(i = 0 ; i < 25 ; i++)
{
if(w[i][25]<ans)
{
c = i+'A';
ans = w[i][25];
}
}
cout<<c<<" "<<ans<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: