两个题的数据是一样的,但是UVA的输出格式更严格一些在输出时要加上%2d 才能过,PE了好几次。。。
uva 567的代码
:
#include <iostream>
#include <cstdio>
#include <string>
#define INF 1000000
using namespace std;
const int maxn=100;
int d[maxn][maxn];
int n,k;
void Init()
{
for(int i=0;i<maxn;i++)
{
for(int j=0;j<maxn;j++)
{
if(i==j) d[i][j]=0;
else d[i][j]=INF;
}
}
}
void floyd()
{
for(int k=1;k<22;k++)
{
for(int i=1;i<22;i++)
{
for(int j=1;j<22;j++)
{
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
}
}
}
return;
}
int main ()
{
int kase=1;
while(~scanf("%d",&n))
{
printf("Test Set #%d\n",kase++);
Init();
for(int i=1;i<=n;i++)
{
scanf("%d",&k);
d[k][1]=d[1][k]=1;
}
for(int i=2;i<=19;i++)
{
scanf("%d",&n);
for(int j=1;j<=n;j++)
{
scanf("%d",&k);
d[k][i]=d[i][k]=1;
}
}
scanf("%d",&n);
int from,to;
floyd();
for(int i=1;i<=n;i++)
{
scanf("%d%d",&from,&to);
printf("%2d to %2d: %d\n",from,to,d[from][to]);
}
printf("\n");
}
return 0;
}