1076 Forwards on Weibo

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
const int N = 1010;
int g[N][N], visit[N];
int n, k, l;
void bfs(int x) {
	queue<int>q;
	q.push(x);
	visit[x] = 1;
	int  res = 0, depth = 0;
	while (q.size() && depth <= l) {
		int size = q.size();//每一层的个数
		for (int i = 0; i < size; i++) {//循环完后这一层点全部出队
			int t = q.front();
			for (int j = 1; j <= n; j++) {
				if (g[t][j] && !visit[j]) {
					q.push(j);
					visit[j] = 1;
					res++;
				}
			}
			q.pop();
		}
		depth++;
	}
	cout << res - q.size() << "\n";//while因为层数限制结束后,queue中可能有下一层的点
}
int main() {
	int m, t, q;
	cin >> n >> l;
	for (int i = 1; i <= n; i++) {
		cin >> m;
		for (int j = 0; j < m; j++) {
			cin >> t;
			g[t][i] = 1;
		}
	}
	cin >> k;
	for (int i = 0; i < k; i++) {
		cin >> q;
		memset(visit, 0, sizeof(visit));
		bfs(q);
	}
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值