本题比较简单,计算下树在哪层元素最多,一个DFS。
题目链接:https://www.patest.cn/contests/pat-a-practise/1094
#include <iostream>
#include <algorithm>
#include <vector>
#include <map>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;
const int MAXSIZE = 1001;
vector<int > NN[MAXSIZE];
int Level[MAXSIZE];
int Sum[MAXSIZE];
void init()
{
fill(Sum,Sum+MAXSIZE,0);
}
void DFS(int id,int level)
{
Level[id] = level;
for(int i=0;i<NN[id].size();++i)
{
DFS(NN[id][i],level+1);
}
}
int main(int argc, char** argv) {
int n,m,num,id;
init();
cin >> n >> m;
for(int i=0;i<m;++i)
{
cin >> id >> num;
for(int j=0;j<num;++j)
{
int temp;
cin >> temp;
NN[id].push_back(temp);
}
}
DFS(01,1);
int max1 = -1,pos;
for(int i=1;i<=n;++i)
{
if(++Sum[Level[i]] > max1)
{
max1 = Sum[Level[i]];
pos = Level[i];
}
}
cout << max1 << " " << pos << endl;
return 0;
}