제출 #1262422

#제출 시각아이디문제언어결과실행 시간메모리
1262422LeonidCukDynamic Diameter (CEOI19_diameter)C++20
24 / 100
5094 ms10436 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<pair<int,long long>>>g; long long res; long long dfs(int a,int b) { long long nmax1=0,nmax2=0; for(auto i:g[a]) { if(i.first!=b) { long long t=i.second+dfs(i.first,a); if(t>nmax1) { nmax2=nmax1; nmax1=t; } else if(t>nmax2)nmax2=t; } } res=max(nmax1+nmax2,res); return nmax1; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); long long n,q,w,a,b,c,last=0; cin>>n>>q>>w; g.resize(n+1); vector<pair<int,pair<int,long long>>>v; for(int i=0;i<n-1;i++) { cin>>a>>b>>c; v.push_back({a,{b,c}}); g[a].push_back({b,c}); g[b].push_back({a,c}); } for(int i=0;i<q;i++) { cin>>a>>b; a=(a+last)%(n-1); b=(b+last)%w; int a1=v[a].first,b1=v[a].second.first; for(int j=0;j<g[a1].size();j++) { if(g[a1][j].first==b1)g[a1][j].second=b; } for(int j=0;j<g[b1].size();j++) { if(g[b1][j].first==a1)g[b1][j].second=b; } res=0; dfs(1,1); last=res; 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...