Submission #1262480

#TimeUsernameProblemLanguageResultExecution timeMemory
1262480ivano_bozhinovskiDynamic Diameter (CEOI19_diameter)C++20
24 / 100
5094 ms6320 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define pb push_back #define pii pair<int,int> typedef long long ll; const int maxn=5e5+5; const ll INF=1e18; vector<vector<pii>> adj; vector<int> w; int n; pii dijkstra(int s) { priority_queue<pii> q; ll d[n+1]; for(int i=0;i<=n;i++)d[i]=INF; d[s]=0; q.push({0,s}); int v,t; bool visited[n+1]; memset(visited,false,sizeof visited); while(!q.empty()) { t=-q.top().first; v=q.top().second; q.pop(); if(t!=d[v])continue; visited[v]=true; for(auto u:adj[v]) { if(visited[u.first])continue; ll len=t+w[u.second]; if(len<d[u.first]) { d[u.first]=len; q.push({-len,u.first}); } } } ll odg=0,idx=-1; for(int i=1;i<=n;i++) { if(d[i]>odg) { odg=d[i]; idx=i; } } return {odg,idx}; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int q; ll W; cin>>n>>q>>W; w.resize(n+1); adj.resize(n+1); int a,b,c; for(int i=1;i<n;i++) { cin>>a>>b>>c; adj[a].pb({b,i}); adj[b].pb({a,i}); w[i]=c; } ll last=0,d,e; for(int i=0;i<q;i++) { cin>>d>>e; d=(d+last)%(n-1)+1; e=(e+last)%W; w[d]=e; int v=dijkstra(1).second; last=dijkstra(v).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...