Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define LL long longint n,et=0;struct edge{int v,next;}e[200005];int first[100005],a[100005];LL f[100005];bool isRoot[100005];LL dfs(int u){LL res = 0;for (int i = first[u];i ;i = e[i].next){res += dfs(e[i].v);f[u] = max(f[u],f[e[i].v]);}for (int i = first[u];i ;i = e[i].next)res += f[u] - f[e[i].v];f[u] += a[u];return res;}int main(){scanf("%d",&n);memset(first,0,sizeof(first));