考点: DFS+树的遍历,其中DFS需要灵活进行更改
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
const int maxn = 100 + 10;
int res[maxn];
struct node
{
int data;
vector<int> child;
} Node[maxn];
void dfs(int index, int level)
{
res[level]++;
for (int i = 0; i < Node[index].child.size(); i++)
{
dfs(Node[index].child[i], level + 1);
}
}
int main(int argc, char const *argv[])
{
int n, m;
cin >> n >> m;
int id, k, child;
for (int i = 0; i < m; i++)
{
cin >> id >> k;
for (int j = 0; j < k; j++)
{
cin >> child;
Node[id].child.push_back(child);
}
}
dfs(1, 1);
int maxnum = 0, maxlevel = 1;
for (int i = 1; i < 100; i++)
{
if (res[i] > maxnum)
{
maxnum = res[i];
maxlevel = i;
}
}
cout << maxnum << " " << maxlevel;
return 0;
}