toj2033 floyd算法 模板
来源:互联网 发布:宇宙战舰大和号 知乎 编辑:程序博客网 时间:2024/06/07 03:02
//toj2033 floyd#include<iostream>#define MAX 21using namespace std;int i,j;int main(){ int t=1,m,n,i,j,k; int map[MAX][MAX]; while(cin>>n) { for(i=1;i<=20;i++) for(j=1;j<=20;j++) map[i][j]=19; //init while(n--) { cin>>m; map[1][m]=map[m][1]=1; } for(i=2;i<20;i++)//第二个之后的 { cin>>n; while(n--) { cin>>m; map[i][m]=map[m][i]=1; } } for(k=1; k<=20; k++) // Floyd算法核心代码。 for(i=1; i<=20; i++) for(j=1; j<=20; j++) if(map[i][k] + map[k][j] < map[i][j]) map[i][j] = map[i][k] + map[k][j]; cin>>n; cout << "Test Set #" << t++ << endl; while(n--){ cin >> i >> j; cout << i << " to " << j << ": " << map[i][j] << endl; } cout << endl; // 输出格式要注意。 } return 0; }