#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#define M 25
using namespace std;
int List[M][M];
int BFS(int,int);
int main()
{
int t=1,i,j,k,x,y,n,con;
freopen("in.txt","r",stdin);
while(scanf("%d",&n)==1)
{
memset(List,0,sizeof(List));
for(i=0;i<n;i++)
{
scanf("%d",&j);
List[1][j]=List[j][1]=1;
}
for(i=2;i<20;i++)
{
scanf("%d",&n);
for(k=0;k<n;k++)
{
scanf("%d",&j);
List[i][j]=List[j][i]=1;
}
}
printf("Test Set #%d\n",t++);
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
con=BFS(x,y);
printf("%2d to %2d: %d\n",x,y,con);
}
printf("\n");
}
return 0;
}
int BFS(int x,int y)
{
int i,h;
int color[M],d[M];
queue<int>Q;
memset(color,0,sizeof(color));
color[x]=1,d[x]=0;Q.push(x);
while(!Q.empty())
{
h=Q.front();Q.pop();
for(i=1;i<=20;i++)
{
if(List[h][i]&&color[i]==0)
{
color[i]=1;
d[i]=d[h]+1;
if(i==y)break;
Q.push(i);
}
}
if(i==y)break;
}
return d[y];
}
#include<cstring>
#include<cstdio>
#include<queue>
#define M 25
using namespace std;
int List[M][M];
int BFS(int,int);
int main()
{
int t=1,i,j,k,x,y,n,con;
freopen("in.txt","r",stdin);
while(scanf("%d",&n)==1)
{
memset(List,0,sizeof(List));
for(i=0;i<n;i++)
{
scanf("%d",&j);
List[1][j]=List[j][1]=1;
}
for(i=2;i<20;i++)
{
scanf("%d",&n);
for(k=0;k<n;k++)
{
scanf("%d",&j);
List[i][j]=List[j][i]=1;
}
}
printf("Test Set #%d\n",t++);
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
con=BFS(x,y);
printf("%2d to %2d: %d\n",x,y,con);
}
printf("\n");
}
return 0;
}
int BFS(int x,int y)
{
int i,h;
int color[M],d[M];
queue<int>Q;
memset(color,0,sizeof(color));
color[x]=1,d[x]=0;Q.push(x);
while(!Q.empty())
{
h=Q.front();Q.pop();
for(i=1;i<=20;i++)
{
if(List[h][i]&&color[i]==0)
{
color[i]=1;
d[i]=d[h]+1;
if(i==y)break;
Q.push(i);
}
}
if(i==y)break;
}
return d[y];
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.