usingnamespace std; typedeflonglong ll; #define endl '\n' typedef pair<int, int> PII; #define debug() cout.flush() #define for0(i, a) for (int i = 0; i < a; ++i) #define REP(i, a, b) for (int i = a; i < b; ++i) #define FOR(i, a, b) for (int i = a; i <= b; ++i) #define REPC(i, a, b, c) for (ll i = a; i < b && i < c; ++i) #define RREP(i, a, b) for (int i = a; i >= b; --i) const ll MOD = 1e9 + 7; const ll mod = 998244353; constint INF = 0x3f3f3f3f; constint MAXN = 5e5 + 5e3;
inlinevoidsolve(){ for (int i = 0; i <= n + 200; i++) sum[i] = 0; for (int i = 2; i <= n; i++) { int a; cin >> a; sum[a]++; } vector<ll>v; v.clear(); ll res = 1; for (int i = 1; i <= n; i++) { if (sum[i]) { if (sum[i] > 1) v.push_back(sum[i]); else res++; } } sort(v.begin(), v.end()); for (auto i : v) { res += max(0ll, (i - res) / 2) + 1; } cout << res << endl; }
signedmain(){ init(); int _; cin >> _; while (_--) { cin >> n; solve(); // debug(); } return0; }
usingnamespace std; typedeflonglong ll; #define endl '\n' typedef pair<int, int> PII; #define debug() cout.flush() #define for0(i, a) for (int i = 0; i < a; ++i) #define REP(i, a, b) for (int i = a; i < b; ++i) #define FOR(i, a, b) for (int i = a; i <= b; ++i) #define REPC(i, a, b, c) for (ll i = a; i < b && i < c; ++i) #define RREP(i, a, b) for (int i = a; i >= b; --i) const ll MOD = 1e9 + 7; const ll mod = 998244353; constint INF = 0x3f3f3f3f; constint MAXN = 5e5 + 5e3;
inlinevoidsolve(){ for (int i = 0; i <= n + 200; i++) sum[i] = 0; for (int i = 2; i <= n; i++) { int a; cin >> a; sum[a]++; } vector<ll>v; v.clear(); ll res = 0; v.push_back(1); for (int i = 1; i <= n; i++) { if (sum[i]) { v.push_back(sum[i]); } } sort(v.begin(), v.end()); res = v.size(); priority_queue<ll>q; for (int i = 0; i < res; i++) { v[i] -= i + 1; if (v[i]) q.push(v[i]); } int cnt = 0; while (!q.empty() && q.top() > cnt) { ll tmp = q.top(); q.pop(); q.push(tmp - 1); cnt++; } cout << res + cnt << endl; }
signedmain(){ init(); int _; cin >> _; while (_--) { cin >> n; solve(); // debug(); } return0; }