Submission #1005913

#TimeUsernameProblemLanguageResultExecution timeMemory
1005913vjudge1Dynamic Diameter (CEOI19_diameter)C++17
11 / 100
5062 ms11720 KiB
#include<bits/stdc++.h> using namespace std; using i64 = long long; using pil = pair<int, i64>; const int N = 1e5 + 5; struct edge { int u, v; i64 w; edge(int u = 0, int v = 0, i64 w = 0) : u(u), v(v), w(w) {} }; int n; int tc; vector<pil> adj[N]; vector<edge> e; i64 last = 0; i64 maxw = 0; i64 ans = 0; void DFS(int u, int p, i64 cur) { ans = max(ans, cur); for(auto [v, w] : adj[u]) { if(v == p) continue; DFS(v, u, cur + w); } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> tc >> maxw; for(int i = 1; i < n; i++) { int u, v; i64 w; cin >> u >> v >> w; e.emplace_back(u, v, w); } while(tc--) { int p; i64 w; cin >> p >> w; p = (p + last) % (n - 1); w = (w + last) % maxw; e[p].w = w; for(auto [u, v, w] : e) { adj[u].emplace_back(v, w); adj[v].emplace_back(u, w); } ans = 0; for(int i = 1; i <= n; i++) DFS(i, 0, 0); cout << ans << "\n"; for(int i = 1; i <= n; i++) adj[i].clear(); last = ans; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...