zoj 1221 Risk

来源:互联网 发布:c语言小写变大写 编辑:程序博客网 时间:2024/04/25 01:33

floyed 算法求最短路径,注意输入的方法,否则会超时

#include<iostream>#include<cstring>#include<cstdio>#define INF 100000#define MAX 22using namespace std;int map[MAX][MAX];int num;int main(){    int i,j,k;    int b;    int no=1;    int org,dest;    while(cin>>num)    {         memset(map,0,sizeof(map));        while(num--)        {            cin>>b;            map[1][b]=map[b][1]=1;        }       for(i=2; i<=19; i++ )       {          cin>>num;           while(num--)           {               cin>>b;               map[i][b]=map[b][i]=1;           }       }       for(i=1; i<=20; i++)        for(j=1; j<=20; j++)       {           if(i==j) map[i][j]=0;           else if(!map[i][j]) map[i][j]=INF;       }     for(k=1; k<=20; k++)      for(i=1; i<=20; i++)        for(j=1; j<=20; j++)      {          if(map[i][j]>map[i][k]+map[k][j])            map[i][j]=map[i][k]+map[k][j];      }      cin>>num;      printf("Test Set #%d\n",no++);    while(num--){             cin>>org>>dest;         printf("%d to %d: %d\n",org,dest,map[org][dest]);    }     cout<<endl;    }    return 0;}


原创粉丝点击