多叉树的遍历,感觉pat25分的题的难度也就是普及-
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define sz(x) ((int) x.size())
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
const int N = 105;
int rec[N + 5];
vi tree[N];
void solve(int root, int level) {
rec[level]++;
if (!sz(tree[root])) return;
for (int i = 0; i < sz(tree[root]); i++) solve(tree[root][i], level + 1);
}
int main() {
int n, m;
cin >> n >> m;
while (m--) {
int fa, k;
cin >> fa >> k;
for (int i = 0; i < k; i++) {
int x; cin >> x;
tree[fa].pb(x);
}
}
solve(1, 1);
int Max = -1, ans;
for (int i = 1; i < N + 1; i++) {
if (rec[i] > Max) { Max = rec[i], ans = i; }
}
cout << Max << " " << ans;
return 0;
}