题目的意思就总共20座城市
前19行就是每一次城市相邻的有哪些城市.
输完19行,在输入这一组要几个样例.分别是哪到哪.
然后用FLOYD算法.
#include<stdio.h>
#include<string.h>
const int M = 25;
int g[M][M];
int INF = 1000;
int main () {
int flag;
int a,b;
int n;
int cas = 1;
while (~scanf("%d",&n)) {
printf("Test Set #%d\n",cas++);
for (int i = 0 ; i <= 20 ;i++) {
for (int j = 0 ; j <= 20 ;j++) {
g[i][j] = INF;
}
}
for (int i = 0 ; i <=20 ;i++) {
g[i][i] = 0;
}
for (int i = 0 ; i < n ;i++) {
scanf("%d",&flag);
g[1][flag] = 1;
g[flag][1] = 1;
}
for (int i = 2 ; i < 20 ;i++) {
scanf("%d",&n);
for (int j = 0 ; j < n ;j++) {
scanf("%d",&flag);
g[i][flag] = 1;
g[flag][i] = 1;
}
}
for (int j = 1 ; j <= 20 ; j++) {
for (int k = 1 ; k <= 20 ;k++) {
for (int l = 1 ; l <= 20 ;l++) {
g[k][l] = g[k][l] < (g[k][j] + g[j][l] )? g[k][l] : (g[k][j] + g[j][l]);
}
}
}
scanf("%d",&n);
for (int i = 0 ; i < n ;i++) {
scanf("%d%d",&a,&b);
printf("%2d to %2d: ",a,b);
printf("%d\n",g[a][b]);
}
printf("\n");
}
}