POJ1125-Stockbroker Grapevine
http://poj.org/problem?id=1125
暴力下
#include<stdio.h> #define INF 0xfffffff #define N 200 int map[N][N],t[N],n,min; void floyd() { int i,j,k; for(k=1;k<=n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(map[i][k]+map[k][j]<map[i][j]) map[i][j]=map[i][k]+map[k][j]; for(i=1;i<=n;i++) { t[i]=map[i][1]; for(j=1;j<=n;j++) if(map[i][j]>t[i]) t[i]=map[i][j]; } min=INF; for(i=1;i<=n;i++) if(t[i]<min) { min=t[i]; k=i; } if(min==INF) printf("disjoint\n"); else printf("%d %d\n",k,min); } int main(void) { int i,j,k,m,t; while(scanf("%d",&n),n) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j) map[i][j]=0; else map[i][j]=INF; } for(i=1;i<=n;i++) { scanf("%d",&m); for(k=1;k<=m;k++) { scanf("%d%d",&j,&t); map[i][j]=t; } } floyd(); } return 0; }