# 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; } ```