1076. Forwards on Weibo (30)

#include <iostream>
#include <vector>
#include <queue>
#include <string.h>

using namespace std;

int l, vis[1010], level, res;
vector<int> v[1010];
queue<int> q;

void bfs()
{
	int qsize = q.size(), cur, vsize, next, i;
	while(qsize--)
	{
		cur = q.front();
		q.pop();

		vsize = v[cur].size();
		for(i = 0; i < vsize; i++)
		{
			next = v[cur][i];
			if(vis[next] == 0)
			{
				vis[next] = 1;
				q.push(next);
			}
		}
	}

	qsize = q.size();
	if(level < l && qsize > 0)
	{
		level++;
		res += qsize;

		bfs();
	}
}

int main()
{
	int n;
	scanf("%d%d", &n, &l);

	int i, next, k, j;
	for(i = 1; i <= n; i++)
	{
		scanf("%d", &k);

		for(j = 1; j <= k; j++)
		{
			scanf("%d", &next);
			v[next].push_back(i);
		}
	}

	scanf("%d", &k);

	int cur;
	for(i = 1; i <= k; i++)
	{
		scanf("%d", &cur);

		memset(vis, 0, sizeof(vis));
		vis[cur] = 1;

		while(q.size() > 0)
		{
			q.pop();
		}
		q.push(cur);

		level = res = 0;
		bfs();

		printf("%d\n", res);
	}

	system("pause");
	return 0;
}

 

posted on 2025-11-23 17:16  王景迁  阅读(1)  评论(0)    收藏  举报

导航