再次庆祝一遍过~太爽啦!
思路:无脑BFS…毫无特色。
#include <bits/stdc++.h>
using namespace std;
vector<int> net[1024];
int visited[1024];
int cnt=0,L=0;
void BFS(int p,int layer)
{
queue<int> q;
for(int i=0;i<net[p].size();i++)
if(!visited[net[p][i]])
{
q.push(net[p][i]);
cnt++;
visited[net[p][i]]=1;
}
if(layer==L-1) return;
while(!q.empty())
{
int tmp=q.front();
q.pop();
BFS(tmp,layer+1);
}
}
int main(void)
{
int N,P;
scanf("%d%d",&N,&L);
for(int i=1;i<=N;i++)
{
int n;
scanf("%d",&n);
for(int j=0;j<n;j++)
{
int fan;
scanf("%d",&fan);
net[fan].push_back(i);
}
}
scanf("%d",&P);
for(int i=0;i<P;i++)
{
memset(visited,0,sizeof(visited));
int p;
scanf("%d",&p);
cnt=0;
visited[p]=1;
BFS(p,0);
printf("%d",cnt);
if(i!=P-1) printf("\n");
}
}