link
struct Node{
int id;
int h;
}node;
vector<Node> G[N];
cin>>n>>l;
for(int i=1;i<=n;i++){
int k;
cin>>k;
node.id=i;
for(int j=0;j<k;j++){
int tmp;
cin>>tmp;
G[tmp].push_back(node);
}
}
int q;
cin>>q;
for(int i=0;i<q;i++){
memset(vis,false,sizeof(vis));
int tmp;
cin>>tmp;
int numF=bfs(tmp);
cout<<numF<<endl;
}
bool vis[N]={false};
int bfs(int v){
int num_F=0;
queue<Node> q;
Node s;
s.id=v;
s.h=0;
q.push(s);
vis[v]=true;
while(!q.empty()){
Node now=q.front();
q.pop();
for(int i=0;i<G[now.id].size();i++){
Node next=G[now.id][i];
next.h=now.h+1;
if(vis[next.id]==false&&next.h<=l){
q.push(next);
vis[next.id]=true;
num_F++;
}
}
}
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
using namespace std;
const int N=1010;
struct Node{
int id;
int layer;
}user;
int n,l;
vector<Node>G[N];
int inq[N]={false};
int bfs(int s){
int numF=0;
queue<Node>q;
Node start;
start.id=s;
start.layer=0;
q.push(start);
inq[start.id]=true;
while(!q.empty()){
Node now=q.front();
q.pop();
int now_id=now.id;
for(int i=0;i<G[now_id].size();i++){
Node next = G[now_id][i];
next.layer=now.layer+1;
if(inq[next.id]==false&&next.layer<=l){
q.push(next);
inq[next.id]=true;
numF++;
}
}
}
return numF;
}
int main()
{
cin>>n>>l;
for(int i=1;i<=n;i++){
user.id=i;
int k;
cin>>k;
for(int j=0;j<k;j++){
int isFollowed;
cin>>isFollowed;
G[isFollowed].push_back(user);
}
}
int q;
cin>>q;
for(int i=0;i<q;i++){
memset(inq,false,sizeof(inq));
int tmp;
cin>>tmp;
int numF=bfs(tmp);
cout<<numF<<endl;
}
return 0;
}
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
const int N = 1010;
struct Node {
int id;
int layer;
}user;
vector<Node> Adj[N];
bool inq[N] = {false};
int bfs(int s,int l) {
int num_f = 0;
queue<Node>q;
Node start;
start.id = s;
start.layer = 0;
q.push(start);
inq[start.id] = true;
while (!q.empty()) {
Node now = q.front();
q.pop();
int now_id = now.id;
for (int i = 0; i < Adj[now_id].size(); i++) {
Node n = Adj[now_id][i];
n.layer = now.id + 1;
if (inq[n.id] == false && n.layer <= l) {
cout << n.id << endl;
q.push(n);
inq[n.id] = true;
num_f++;
}
}
}
return num_f;
}
int main() {
int n,l;
cin >> n >> l;
for (int i = 1; i <= n; i++) {
user.id = i;
int k;
cin >> k;
for (int j = 0; j < k;j++) {
int chase;
cin >> chase;
Adj[chase].push_back(user);
}
}
int q;
cin >> q;
for (int i = 0; i < q; i++) {
memset(inq, false, sizeof(inq));
int tmp;
cin >> tmp;
int num_forward=bfs(tmp,l);
cout << num_forward<<endl;
}
return 0;
}