#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
#define maxn 1010
struct Node
{
int id;
int layer;
};
vector<Node> G[maxn];
bool vis[maxn]={false};
int n,L,x,k,i,j,cnt=0;
Node node,temp;
//广度遍历,u为当前遍历的节点,deep为深度
void BFS(int u)
{
queue<Node> qu;
Node start;
start.id = u;
start.layer = 0;
qu.push(start);
vis[start.id] = true;
while (!qu.empty())
{
Node front = qu.front();
if(front.layer !=0 && front.layer <= L)
{
cnt++;
}
qu.pop();
int s = front.id;
for(int i=0; i<G[s].size(); i++)
{
Node next = G[s][i];
next.layer = front.layer + 1;
if(vis[next.id] == false)
{
qu.push(next);
vis[next.id] = true;
}
}
}
}
int main()
{
//输入数据
scanf("%d%d",&n,&L);
//构造图
for(i=1; i<=n; i++)
{
temp.id = i;
temp.layer = 0;
scanf("%d",&x);
for(j=0; j<x; j++)
{
scanf("%d",&node.id);
node.layer = 0;
G[node.id].push_back(temp);
}
}
//输入需要开始遍历的节点,并遍历和输出结果
scanf("%d",&k);
for(int i=0; i<k; i++)
{
int a;
scanf("%d",&a);
BFS(a);
printf("%d\n",cnt);
cnt = 0;
for(int i=1; i<=n; i++)
vis[i] = false;
}
return 0;
}
1076. Forwards on Weibo (30)
最新推荐文章于 2023-05-29 15:45:16 发布