#include<bits/stdc++.h>
#define sz 105
using namespace std;
vector<int>mat[sz];
bool color[sz];
int counter;
void dfs(int u)
{
for(int i=0;i<mat[u].size();i++)
{
int v=mat[u][i];
if(color[v]==false)
{
counter++;
color[v]=true;
dfs(v);
}
}
}
int main()
{
int n,node_number,connected_node,queries,start_node,result,i,j;
while(scanf("%d",&n)==1)
{
if(n==0)
{
break;
}
for(;;)
{
scanf("%d",&node_number);
if(node_number==0)
{
break;
}
for(;;)
{
scanf("%d",&connected_node);
if(connected_node==0)
{
break;
}
mat[node_number].push_back(connected_node);
}
}
scanf("%d",&queries);
for(i=1;i<=queries;i++)
{
scanf("%d",&start_node);
counter=0;
if(color[start_node]==false)
{
dfs(start_node);
}
result=n-counter;
printf("%d",result);
for(j=1;j<=n;j++)
{
if(color[j]==false)
{
printf(" %d",j);
}
}
printf("\n");
memset(color,false,sizeof(color));
}
for(i=0;i<=n;i++)
{
mat[i].clear();
}
}
return 0;
}
#define sz 105
using namespace std;
vector<int>mat[sz];
bool color[sz];
int counter;
void dfs(int u)
{
for(int i=0;i<mat[u].size();i++)
{
int v=mat[u][i];
if(color[v]==false)
{
counter++;
color[v]=true;
dfs(v);
}
}
}
int main()
{
int n,node_number,connected_node,queries,start_node,result,i,j;
while(scanf("%d",&n)==1)
{
if(n==0)
{
break;
}
for(;;)
{
scanf("%d",&node_number);
if(node_number==0)
{
break;
}
for(;;)
{
scanf("%d",&connected_node);
if(connected_node==0)
{
break;
}
mat[node_number].push_back(connected_node);
}
}
scanf("%d",&queries);
for(i=1;i<=queries;i++)
{
scanf("%d",&start_node);
counter=0;
if(color[start_node]==false)
{
dfs(start_node);
}
result=n-counter;
printf("%d",result);
for(j=1;j<=n;j++)
{
if(color[j]==false)
{
printf(" %d",j);
}
}
printf("\n");
memset(color,false,sizeof(color));
}
for(i=0;i<=n;i++)
{
mat[i].clear();
}
}
return 0;
}
0 comments: (+add yours?)
Post a Comment