UVa 567 Risk (Floyd+任意两点最短路)

来源:互联网 发布:清宫表虚岁准确算法 编辑:程序博客网 时间:2024/05/22 22:30
#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<climits>#include<queue>#include<map>#include<vector>#include<iostream>#include<stack>#include<string>#include<set>using namespace std;const int INF=100000000;int d[25][25];void Floyd( ){for(int k=1;k<=20;k++)for(int i=1;i<=20;i++)for(int j=1;j<=20;j++){d[i][j]=min(d[i][j],d[i][k]+d[k][j]);}}int main(){int num=1;int m;while(~scanf("%d",&m)){for(int i=1;i<=20;i++)        {            for(int j=1;j<=20;j++)            {                if(i==j)d[i][j]=0;                else d[i][j]=INF;            }        }for(int i=0;i<m;i++){int a;scanf("%d",&a);d[1][a]=d[a][1]=1;}for(int i=2;i<=19;i++){scanf("%d",&m);for(int j=0;j<m;j++){int a;scanf("%d",&a);d[i][a]=d[a][i]=1;}}Floyd();int n;scanf("%d",&n);printf("Test Set #%d\n",num++);for(int i=0;i<n;i++){int a,b;scanf("%d%d",&a,&b);//if(i==0)printf("Test Set #%d\n",num++);printf("%2d to %2d: %d\n",a,b,d[a][b]);}printf("\n");}return 0;}

0 0