#include #include #include using namespace std;

const int N = 1e5 + 5; vector g[N]; long long a[N], s[N], d[N]; int n; long long t, ans = LLONG_MAX;

void d1(int u, int f) { s[u] = a[u]; for (int i = 0; i < g[u].size(); i++) { int v = g[u][i]; if (v == f) continue; d1(v, u); s[u] += s[v]; d[u] += d[v] + s[v]; } }

void d2(int u, int f) { ans = min(ans, d[u]); for (int i = 0; i < g[u].size(); i++) { int v = g[u][i]; if (v == f) continue; d[v] = d[u] - s[v] + (t - s[v]); d2(v, u); } }

int main() { ios::sync_with_stdio(false), cin.tie(0); cin >> n; for (int i = 1; i <= n; i++) { int l, r; cin >> a[i] >> l >> r; if (l) { g[i].push_back(l); g[l].push_back(i); } if (r) { g[i].push_back(r); g[r].push_back(i); } } d1(1, 0); t = s[1]; d2(1, 0); cout << ans << endl; return 0; }

1 条评论

  • 1

信息

ID
2
时间
ms
内存
MiB
难度
1
标签
递交数
1080
已通过
207
上传者