题意:Floyd!!!直接说输入格式你们一定会做。
就是说多组数据,然后每组先一个n,然后n行,一个数是有几条出边(单向边),然后每条出边俩数分别为点和边权。
好了,现在求的是点x,使从x出发最远的点 最近,不懂直接看代码,风格良好!!!
#include <cstdio> #include <cstring> #include <algorithm> #define N 105 #define inf 0x3f3f3f3f using namespace std; int ans,answ; int map[N][N],n; int main() { // freopen("test.in","r",stdin); int i,j,k; int a,b,c; while(scanf("%d",&n),n) { memset(map,0x3f,sizeof(map)); for(i=1;i<=n;i++) { scanf("%d",&c); for(j=1;j<=c;j++) { scanf("%d%d",&a,&b); map[i][a]=b; } map[i][i]=0; } for(k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++)map[i][j]=min(map[i][j],map[i][k]+map[k][j]); answ=inf; for(i=1;i<=n;i++) { int as=0; for(j=1;j<=n;j++)as=max(as,map[i][j]); if(as<answ) { answ=as; ans=i; } } printf("%d %d\n",ans,answ); } return 0; }
【POJ1125】Stockbroker Grapevine 最短路
原文地址:http://blog.csdn.net/vmurder/article/details/40685681