Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define N 100010int n, r;long long w[N], sum[N], ans;struct edge{int v;int next;}e[N << 1];int pre[N], ecnt;void init() {ecnt = 0;memset(pre, -1, sizeof(pre));}void addEdge(int u, int v) {e[ecnt].v = v;e[ecnt].next = pre[u];pre[u] = ecnt++;}void dfs(int u, int p) {sum[u] = w[u];for (int i = pre[u]; i != -1; i = e[i].next) {