ZOJ3166-Lazy Tourist
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3166
#include<stdio.h>
#include<string.h>
#define INF 0xfffffff
#define N 102
int map[N][N],hot[N],n,min,c;
void floyd()
{
int i,j,k,t;
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(map[i][j]>map[i][k]+map[k][j]&&map[i][k]!=INF&&map[k][j]!=INF)
map[i][j]=map[i][k]+map[k][j];
for(i=1,t=-1,min=INF;i<=c;i++)
if(map[hot[i]][hot[i]]<min)
min=map[t=hot[i]][hot[i]];
if(t==-1)
printf("I will nerver go to that city!\n");
else
printf("%d\n",t);
}
int main(void)
{
int i,j,m,a,b,d;
while(scanf("%d%d",&n,&c)!=EOF)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
map[i][j]=INF;
for(i=1;i<=c;i++)
scanf("%d",&hot[i]);
scanf("%d",&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&d);
if(map[a][b]>d)
map[a][b]=d;
}
floyd();
}
return 0;
}
转载于//www.cnblogs.com/YogurtShen/archive/2012/08/30/2664232.html
还没有评论,来说两句吧...