PAT 甲级 1076 Forwards on Weibo
#include <bits/stdc++.h>
using namespace std;
int n,l;
vector<int> graph[1010];
bool in_q[1010];
struct Node{
int id,layer;
};
void BFS(int root){
memset(in_q,0,sizeof(in_q));
queue<Node> q;
q.push({root,0});in_q[root]=true;
int num=-1;
while(!q.empty()){
Node now=q.front();q.pop();
++num;
for(auto i:graph[now.id]){
if(!in_q[i]&&now.layer<l){
q.push({i,now.layer+1});
in_q[i]=true;
}
}
}
cout<<num<<endl;
}
int main() {
cin.tie(0);std::ios::sync_with_stdio(false);
cin>>n>>l;
int m,tmp;
for(int i=1;i<=n;++i){
cin>>m;
while(m--){
cin>>tmp;
graph[tmp].push_back(i);
}
}
int k,root;
cin>>k;
while(k--){
cin>>root;
BFS(root);
}
}