Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;vector<int> g[100010];long long res[100010], sum[100010];int a[100010];void dfs(int u, int pu) {res[u] = 0;sum[u] = a[u];for (auto v : g[u]) {if (v == pu) {continue;}dfs(v, u);if (sum[v] != 0) {long long num = max(res[v] + 1, sum[v]);res[u] = max(res[u], num);sum[u] += sum[v];}}}int main() {int T;scanf("%d", &T);for (int cas = 1; cas <= T; cas ++) {int n, s;scanf("%d%d", &n, &s);for (int i = 1; i <= n; i ++) {g[i].clear();