Submission #1303059

#TimeUsernameProblemLanguageResultExecution timeMemory
1303059MuhammadSaramDynamic Diameter (CEOI19_diameter)C++20
0 / 100
5089 ms20804 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define endl '\n' const int M = 1e5 + 1; int dep[M]; set<pair<int,int>> nei[M]; void dfs(int u,int p=0) { for (auto [i,w]:nei[u]) if (i!=p) dep[i]=dep[u]+w, dfs(i,u); } signed main() { ios::sync_with_stdio(0); cin.tie(NULL), cout.tie(NULL); int n,q,W; cin>>n>>q>>W; int u[n], v[n], w[n]; for (int i=0;i<n-1;i++) { cin>>u[i]>>v[i]>>w[i]; nei[u[i]].insert({v[i],w[i]}); nei[v[i]].insert({u[i],w[i]}); } int ls=0; while (q--) { int i, x; cin>>i>>x; i=(i+ls)%(n-1), x=(x+ls)%W; nei[u[i]].erase({v[i],w[i]}); nei[v[i]].erase({u[i],w[i]}); w[i]=x; nei[u[i]].insert({v[i],w[i]}); nei[v[i]].insert({u[i],w[i]}); dfs(1); int u=1; for (int i=1;i<=n;i++) if (dep[i]>dep[u])u=i; dep[u]=0, dfs(u); u=0; for (int i=1;i<=n;i++) if (dep[i]>dep[u])u=i; cout<<dep[u]<<endl; } return 0; }
#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...