Stockbroker Grapevine (floyd)
1A
#include <stdio.h> #include <string.h> #include <algorithm> #define INF 0x3f3f3f3f using namespace std; int grid[105][205],dist[105][205],n,p; int floyd() { int k,i,j,ans=INF,ans1,minc=0; for (i=1;i <=n;i++) for (j=1;j<=n;j++) dist[i][j] = grid[i][j]; for (k=1;k<=n;k++) for (i=1;i<=n;i++) for (j=1;j<=n;j++) if(dist[i][j]>dist[i][k]+dist[k][j]) dist[i][j]=dist[i][k]+dist[k][j]; for (i=1;i<=n;i++) { ans1=0; for(j=1;j<=n;j++) ans1+=dist[i][j]; if(ans>ans1 && ans1>=0) { ans=ans1; p=i; } } for(j=1;j<=n;j++) if(minc<dist[p][j] && p!=j) minc=dist[p][j]; return minc; } int main() { int i,j,t,a,b; while (scanf("%d",&n) && n) { for(i=1; i<=n; i++) for(j=1; j<=n; j++) grid[i][j]=i==j?0:INF; for (i=1;i<=n;i++) { scanf("%d",&t); for(j=1;j<=t;j++) { scanf("%d%d",&a,&b); grid[i][a]=b; } } printf("%d %d\n",p,floyd()); } return 0; }