题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805372601090048
常规BFS和DFS都可以,这里为了再熟悉一下BFS的写法,用了BFS
一开始从0开始求最值了,改成从1开始就过了
代码
#include<vector>#include<algorithm>#include<iostream>#include<queue>using namespace std;const int maxn = 110;struct Node{int depth;vector<int> child;}node[maxn];int n, m;int depth_table[110] = {0};void BFS(){queue<int> q;q.push(1);node[1].depth = 1;while(!q.empty()){int top = q.front();q.pop();for(int i = 0; i < node[top].child.size(); i++){int child = node[top].child[i];node[child].depth = node[top].depth + 1;q.push(child);}}}void caculate(){int max_index = 1;for(int i = 1; i < maxn; i++) depth_table[node[i].depth]++;for(int i = 1; i < maxn; i++){if(depth_table[i] > depth_table[max_index]){max_index = i;}}printf("%d %d", depth_table[max_index], max_index);}int main(){scanf("%d%d", &n, &m);int id, child_num, child_temp;for(int i = 0; i < m; i++){scanf("%d%d", &id, &child_num);for(int j = 0; j < child_num; j++){scanf("%d", &child_temp);node[id].child.push_back(child_temp);}}BFS();caculate();return 0;}
