- Hello,World!
医院
- @ 2026-1-18 9:03:50
#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 条评论
-
方奕鸣 LV 4 @ 2026-2-24 20:21:45121risdgfdssarfw
🤔 1
- 1
信息
- ID
- 2
- 时间
- ms
- 内存
- MiB
- 难度
- 1
- 标签
- 递交数
- 1080
- 已通过
- 207
- 上传者