您的位置:首页 > 其它

【PAT甲级】1076. Forwards on Weibo (30)

2017-07-05 17:22 459 查看
#include <iostream>
#include <vector>
#include <stack>
#include <stdlib.h>
#include <string.h>
using namespace std;

int main() {
int n, l;
cin >> n >> l;
vector<int> *v = new vector<int>[n + 1];
int m, fol;
for (int i = 1; i <= n; i++) {
cin >> m;
for (int j = 0; j < m; j++) {
cin >> fol;
v[fol].push_back(i);
}
}
int k, q;
cin >> k;
int *set = new int[n + 1];
int count = 0;
for (int i = 0; i < k; i++) {
count = 0;
cin >> q;
memset(set, 0, (n + 1) * sizeof(int));
set[q] = 1;
stack<pair<int, int> > s;
s.push(make_pair(q, l));
while (!s.empty()) {
int t = s.top().first;
int dep = s.top().second;
s.pop();
if (dep >= 1) {
for (int j = 0; j < v[t].size(); j++) {
if (set[v[t][j]] == 0) {
set[v[t][j]] = 1;
count++;
s.push(make_pair(v[t][j], dep - 1));
}
}
}
}
cout << count << endl;
}
delete[] set;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: