AcWing 1562. 微博转发
原题链接
中等
作者:
leo123456
,
2020-08-29 16:24:33
,
所有人可见
,
阅读 1604
#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
using namespace std;
const int N=1010;
int n,L;
vector<int> v[N];
bool st[N];
int bfs(int u)
{
int count=0;
memset(st,0,sizeof st);
queue<int> q;
q.push(u);
st[u]=true;
for(int i=1;i<=L;i++)
{
int size=q.size();
for(int k=0;k<size;k++)
{
auto t=q.front();
q.pop();
for(int j=0;j<v[t].size();j++)
{
if(!st[v[t][j]])
{
count++;
q.push(v[t][j]);
st[v[t][j]]=true;
}
}
}
}
return count;
}
int main()
{
cin>>n>>L;
for(int i=1;i<=n;i++)
{
int cnt;
cin>>cnt;
if(cnt==0) continue;
else
{
while(cnt--)
{
int father;
cin>>father;
v[father].push_back(i);
}
}
}
int k;
cin>>k;
while(k--)
{
int idx;
cin>>idx;
cout<<bfs(idx)<<endl;
}
return 0;
}