| 9 | parent(n, -1), loc(n), adj(n) { |
| 10 | vector<ll> tmp(n, ID); values = segment_tree(tmp); } |
| 11 | void add_edge(int u, int v) { |
| 12 | adj[u].push_back(v); adj[v].push_back(u); } |
| 13 | void update_cost(int u, int v, int c) { |
| 14 | if (parent[v] == u) swap(u, v); assert(parent[u] == v); |
| 15 | values.update(loc[u], c); } |