#include<bits/stdc++.h>
using namespace std;
long source,desti,ans,i,i1;
vector<long>vec[25];
void bfs(long int s,long int d)
{
queue< long >q;
long visited[50]={0}, level[50];
visited[s]=1;
level[s]=0;
q.push(s);
while(!q.empty())
{
int u=q.front();
for(i=0; i<vec[u].size(); i++)
{
int v = vec[u][i];
if(!visited[v])
{
visited[v]=1;
level[v] = level[u]+1;
q.push(v);
}
}
q.pop();
}
printf("%2ld to %2ld: %ld\n",s,d,level[d]);
}
main()
{
long n,m,cs=1;
while(scanf("%ld",&n)==1)
{
for(i=1;i<=n;i++)
{
cin>>m;
vec[1].push_back(m);
vec[m].push_back(1);
}
for(i=2;i<=19;i++)
{
cin>>n;
for(i1=1;i1<=n;i1++)
{
cin>>m;
vec[i].push_back(m);
vec[m].push_back(i);
}
}
long a1;
cin>>a1;
printf("Test Set #%ld\n",cs++);
for(i1=1;i1<=a1;i1++)
{
cin>>source>>desti;
bfs(source,desti);
}
cout<<endl;
for(i=0;i<25;i++)
{
vec[i].clear();
}
}
}
using namespace std;
long source,desti,ans,i,i1;
vector<long>vec[25];
void bfs(long int s,long int d)
{
queue< long >q;
long visited[50]={0}, level[50];
visited[s]=1;
level[s]=0;
q.push(s);
while(!q.empty())
{
int u=q.front();
for(i=0; i<vec[u].size(); i++)
{
int v = vec[u][i];
if(!visited[v])
{
visited[v]=1;
level[v] = level[u]+1;
q.push(v);
}
}
q.pop();
}
printf("%2ld to %2ld: %ld\n",s,d,level[d]);
}
main()
{
long n,m,cs=1;
while(scanf("%ld",&n)==1)
{
for(i=1;i<=n;i++)
{
cin>>m;
vec[1].push_back(m);
vec[m].push_back(1);
}
for(i=2;i<=19;i++)
{
cin>>n;
for(i1=1;i1<=n;i1++)
{
cin>>m;
vec[i].push_back(m);
vec[m].push_back(i);
}
}
long a1;
cin>>a1;
printf("Test Set #%ld\n",cs++);
for(i1=1;i1<=a1;i1++)
{
cin>>source>>desti;
bfs(source,desti);
}
cout<<endl;
for(i=0;i<25;i++)
{
vec[i].clear();
}
}
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন