Submission #1262458

#TimeUsernameProblemLanguageResultExecution timeMemory
1262458mkkkkkkkkDynamic Diameter (CEOI19_diameter)C++20
24 / 100
945 ms9644 KiB
#include <bits/stdc++.h> using namespace std; vector<pair<long long,long long>> adj[100001]; long long dist[5001]; void dfs(long long i,long long d) { dist[i]=d; for(auto it : adj[i]) { long long br=it.first; long long br2=it.second; if(dist[br]==-1) dfs(it.first,d+br2); } } int main() { ios::sync_with_stdio((false)); cin.tie(NULL); cout.tie(NULL); long long n,q,w; cin>>n>>q>>w; vector<pair<long long,long long>> edges; for(long long n1=n-1;n1>0;n1--) { long long a,b,c; cin>>a>>b>>c; edges.push_back({a,b}); adj[a].push_back({b,c}); adj[b].push_back({a,c}); } long long last=0; for(;q>0;q--) { long long d,e; cin>>d>>e; d=(d+last)%(n-1); e=(e+last)%w; pair<long long,long long> par=edges[d]; for(long long i=0;i<adj[par.first].size();i++) { if(adj[par.first][i].first==par.second) { adj[par.first][i].second=e; } } for(long long i=0;i<adj[par.second].size();i++) { if(adj[par.second][i].first==par.first) { adj[par.second][i].second=e; } } memset(dist,-1,sizeof(dist)); dfs(1,0); pair<long long,long long> maxx={0,0}; for(long long i=1;i<=n;i++) { maxx=max(maxx,{dist[i],i}); } long long br=maxx.second; memset(dist,-1,sizeof(dist)); dfs(br,0); pair<long long,long long> maxx2={0,0}; for(long long i=1;i<=n;i++) { maxx2=max(maxx2,{dist[i],i}); } last=maxx2.first; cout<<last<<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...