-
Bio
#include <bits/stdc++.h> using namespace std; int n, q, x[222222], y[222222], w[222222], sub[222222], a, b; vector<pair<int, int> > g[222222]; long long ans; void dfs(int i, int fa) { sub[i] = 1; for (int j = 0; j < g[i].size(); j++) { int to = g[i][j].first, val = g[i][j].second; if (to == fa) continue; dfs(to, i); ans += (1ll * sub[to] * (n - sub[to]) * val); sub[i] += sub[to]; } } int main() { freopen("tree.in", "r", stdin); freopen("tree.out", "w", stdout); scanf("%d%d", &n, &q); for (int i = 1; i < n; i++) { scanf("%d%d%d", &x[i], &y[i], &w[i]); g[x[i]].push_back(make_pair(y[i], w[i])); g[y[i]].push_back(make_pair(x[i], w[i])); } dfs(1, 0); while (q--) { scanf("%d%d", &a, &b); if (sub[x[a]] < sub[y[a]]) swap(x[a], y[a]); ans += (1ll * sub[y[a]] * (n - sub[y[a]]) * (b - w[a])); w[a] = b; printf("%lld\n", ans); } return 0; }
-
Recent Activities
This person is lazy and didn't join any contests or homework. -
Recent Solutions
This person is lazy and didn't write any solutions.