1076 Forwards on Weibo (30 分)
思路有空更新
#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;
vector<int> v[1050];
int n, l, k, x, m, vis[1050];
int bfs(int x){
int level = 0, ret = 0;
queue<int> q;
q.push(x);
vis[x] = 1;
while(!q.empty() && level < l){
int size = q.size();
for(int i = 0; i < size; ++i){
int a = q.front();
for(int j = 0; j < v[a].size(); ++j){
if(!vis[v[a][j]]){
q.push(v[a][j]);
vis[v[a][j]] = 1;
ret++;
}
}
q.pop();
}
level++;
}
return ret;
}
int main() {
cin >> n >> l;
for(int i = 1; i <= n; ++i) {
cin >> m;
while(m--) {
cin >> x;
v[x].push_back(i);
}
}
cin >> k;
while(k--) {
memset(vis, 0, sizeof vis);
cin >> x;
cout << bfs(x) << endl;
}
}