Skip to content

Commit 601d0e8

Browse files
committed
Update AdvancedLevel_C++/1076. Forwards on Weibo (30) .cpp
1 parent 3809391 commit 601d0e8

File tree

1 file changed

+46
-25
lines changed

1 file changed

+46
-25
lines changed
Lines changed: 46 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,52 @@
1-
#include <iostream>
2-
#include <algorithm>
1+
#include <cstdio>
2+
#include <queue>
3+
#include <vector>
34
using namespace std;
4-
int main() {
5-
int n;
6-
scanf("%d\n", &n);
7-
string ans;
8-
for(int i = 0; i < n; i++) {
9-
string s;
10-
getline(cin, s);
11-
int lens = s.length();
12-
reverse(s.begin(), s.end());
13-
if(i == 0) {
14-
ans = s;
15-
continue;
16-
} else {
17-
int lenans = ans.length();
18-
int minlen = min(lens, lenans);
19-
for(int j = 0; j < minlen; j++) {
20-
if(ans[j] != s[j]) {
21-
ans = ans.substr(0, j);
22-
break;
23-
}
5+
int n, l, m, k;
6+
struct node {
7+
int id, layer;
8+
};
9+
vector<vector<int>> v;
10+
int bfs(node tnode) {
11+
bool inq[1010] = {false};
12+
queue<node> q;
13+
q.push(tnode);
14+
inq[tnode.id] = true;
15+
int cnt = 0;
16+
while(!q.empty()) {
17+
node top = q.front();
18+
q.pop();
19+
int topid = top.id;
20+
for(int i = 0; i < v[topid].size(); i++) {
21+
int nextid = v[topid][i];
22+
if(inq[nextid] == false && top.layer < l) {
23+
node next = {nextid, top.layer + 1};
24+
q.push(next);
25+
inq[next.id] = true;
26+
cnt++;
2427
}
2528
}
2629
}
27-
reverse(ans.begin(), ans.end());
28-
if (ans.length() == 0) ans = "nai";
29-
cout << ans;
30+
return cnt;
31+
}
32+
33+
int main() {
34+
scanf("%d %d", &n, &l);
35+
v.resize(n + 1);
36+
for(int i = 1; i <= n; i++) {
37+
scanf("%d", &m);
38+
for(int j = 0; j < m; j++) {
39+
int temp;
40+
scanf("%d", &temp);
41+
v[temp].push_back(i);
42+
}
43+
}
44+
scanf("%d", &k);
45+
int tid;
46+
for(int i = 0; i < k; i++) {
47+
scanf("%d", &tid);
48+
node tnode = {tid, 0};
49+
printf("%d\n", bfs(tnode));
50+
}
3051
return 0;
3152
}

0 commit comments

Comments
 (0)