#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
using namespace std;
#define N 1001
int count(int src, int n, vector<int> sn[], int level) {
bool done[N] = {};
int dist[N] = {};
int node = src;
done[node] = true;
while(dist[node] <= level) {
for(int i = 0; i < sn[node].size(); i ++) {
int next = sn[node][i];
if(!done[next] && (!dist[next] || dist[next] > dist[node] + 1))
dist[next] = dist[node] + 1;
}
int mind = 0x7fffffff;
for(int i = 1; i <= n; i ++) {
if(!done[i] && dist[i] && dist[i] < mind) {
mind = dist[i];
node = i;
}
}
if(mind == 0x7fffffff)
break;
done[node] = true;
}
int c = 0;
for(int i = 1; i <= n; i ++) {
if(done[i] && dist[i] <= level)
c ++;
}
return c-1;
}
int main(int argc, char **argv) {
int n, level;
cin >> n >> level;
vector<int> sn[N];
for(int i = 1; i <= n; i ++) {
int m;
scanf("%d", &m);
for(int j = 0; j < m; j ++) {
int id;
scanf("%d", &id);
sn[id].push_back(i);
}
}
int k;
cin >> k;
for(int i = 0; i < k; i ++) {
int src;
scanf("%d", &src);
printf("%d\n", count(src, n, sn, level));
}
return 0;
}
1076. Forwards on Weibo (30)
最新推荐文章于 2023-05-29 15:45:16 发布