# c463: apcs 樹狀圖分析 (Tree Analyses)
```c++=
#include <iostream>
#include <vector>
#include <string.h>
#include <algorithm>
using namespace std;
int n, H;
int v[100005];
long long int ans = 0;
vector<int> M[100005];
int tall(int id){
if (v[id] != -1) return v[id];
int t = 0,len = M[id].size(),tmp;
for (int i = 0;i < len;i++){
tmp = tall(M[id][i])+1;
t = max(t,tmp);
}
v[id] = t;
return t;
}
int main() {
cin >> n;
memset(v,-1,sizeof(v));
for (int i = 1;i <= n;i++){
M[i].clear();
}
for (int i = 1,a;i <= n;i++){
cin >> a;
for (int j = 0,b;j < a;j++){
cin >> b;
M[i].push_back(b);
}
}
for (int i = 1,tmp;i <= n;i++){
tmp = tall(i);
ans += tmp;
if (tmp > v[H]) H = i;
}
cout << H << "\n" << ans;
}
```