本文主要是介绍poj 1125 最短路,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<cstdio>
#include<cstring>
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)>(y)?(y):(x))
#define INF 0x3f3f3f3f
int n;
int map[120][120];
void Floyd()
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)map[i][j]=MIN(map[i][j],map[i][k]+map[k][j]);
}
void init()
{for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i==j)map[i][j]=0;elsemap[i][j]=INF;
}
int main()
{while(~scanf("%d",&n)&&n){init(); for(int i=1;i<=n;i++){int t;scanf("%d",&t);while(t--){int b,v;scanf("%d%d",&b,&v);map[i][b]=v;}}Floyd();int res=INF,lo;for(int i=1;i<=n;i++){int tem=-1;for(int j=1;j<=n;j++){tem=MAX(tem,map[i][j]);}if(tem<res){res=tem;lo=i;}}if(res==INF)printf("disjoint\n");elseprintf("%d %d\n",lo,res);}
}
这篇关于poj 1125 最短路的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!