/* source: zju 1221 */
/* algo: floyd */
/* author: St.Crux */
#include <cstdio>
int m[20][20];
int main()
{
//freopen("in.txt", "r", stdin);
int i, k, j, n, a, t = 0;
while(scanf("%d", &a) != EOF)
{
for(i = 0; i < 20; i ++)
{
for(k = 0; k < 20; k ++)
{
m[i][k] = ((i == k) ? 0 : 100);
}
}
for(k = 0; k < a; k ++)
{
scanf("%d", &j);
m[0][j - 1] = 1;
m[j - 1][0] = 1;
}
for(i = 1; i < 19; i ++)
{
scanf("%d", &a);
for(k = 0; k < a; k ++)
{
scanf("%d", &j);
m[i][j - 1] = 1;
m[j - 1][i] = 1;
}
}
for(i = 0; i < 20; i ++)
{
for(k = 0; k < 20; k ++)
{
for(j = 0; j < 20; j ++)
{
if(m[i][k] > m[i][j] + m[j][k])
{
m[i][k] = m[i][j] + m[j][k];
m[k][i] = m[i][k];
}
}
}
}
a = 0;
scanf("%d", &n);
printf("Test Set #%d\n", ++ t);
for(i = 0; i < n; i ++)
{
scanf("%d%d", &j, &k);
printf("%d to %d: %d\n", j, k, m[j - 1][k - 1]);
}
printf("\n");
}
return 0;
}
评论