제출 #1194876

#제출 시각아이디문제언어결과실행 시간메모리
1194876irmuunDynamic Diameter (CEOI19_diameter)C++20
7 / 100
128 ms14952 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() const ll N=1e5+5,Q=1e5+5; ll n,q,W; ll a[N],b[N],c[N]; ll mx=-1,node; vector<ll>g[N]; void dfs(ll x,ll p,ll d){ if(d>mx){ mx=d; node=x; } for(ll i:g[x]){ ll y=(a[i]==x?b[i]:a[i]),w=c[i]; if(y!=p){ dfs(y,x,d+w); } } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin>>n>>q>>W; multiset<ll,greater<ll>>edge; for(ll i=0;i<n-1;i++){ cin>>a[i]>>b[i]>>c[i]; g[a[i]].pb(i); g[b[i]].pb(i); edge.insert(c[i]); } ll last=0; while(q--){ ll d,e; cin>>d>>e; d=(d+last)%(n-1); e=(e+last)%W; edge.erase(edge.find(c[d])); c[d]=e; edge.insert(c[d]); if(n==2){ last=c[0]; cout<<last<<"\n"; } else{ last=*edge.begin()+*next(edge.begin()); cout<<last<<"\n"; } // mx=-1; // dfs(1,1,0); // mx=-1, // dfs(node,node,0); // last=mx; // cout<<last<<"\n"; } }
#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...