题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805392092020736
这题基本是自己写的,BFS还是相对熟悉,但还是有遗忘的情况,事实证明不复习绝对凉凉,注意点是邻接表可以设置成Node型的
代码
#include<iostream>#include<vector>#include<queue>#include<algorithm>#include<cstdio>using namespace std;const int maxn = 1010;vector<int> G[maxn];bool inq[maxn] = {false};struct Node{int data, depth;};int n, m, l, k;int BFS(int data){Node node;node.data = data;node.depth = 0;queue<Node> q;q.push(node);inq[node.data] = true;int num = 0;while(!q.empty()){Node top = q.front();q.pop();for(int i = 0; i < G[top.data].size(); i++){Node next;next.data = G[top.data][i];next.depth = top.depth + 1;if(next.depth <= l && inq[G[top.data][i]] == false){inq[G[top.data][i]] = true;q.push(next);num++;}}}return num;}int main(){int follower, user_id;scanf("%d%d", &n, &l);for(int i = 1; i <= n; i++){scanf("%d", &m);for(int j = 0; j < m; j++){scanf("%d", &follower);G[follower].push_back(i);}}scanf("%d", &k);for(int i = 0; i < k; i++){fill(inq, inq + maxn, false);scanf("%d", &user_id);int result = BFS(user_id);printf("%d\n", result);}}
