Submission #1303034

#TimeUsernameProblemLanguageResultExecution timeMemory
1303034Faisal_SaqibDynamic Diameter (CEOI19_diameter)C++20
24 / 100
5093 ms13544 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define int long long #define pb push_back const ll N=100100; vector<pair<ll,ll>> ma[N]; pair<ll,ll> edg[N]; ll dp[N][2],h[N],sz[N],dist[N],par[N],ans=0,wei[N]; void dfs(int x,int p=-1) { dp[x][1]=dp[x][0]=0; for(auto it:ma[x]) { int y=it.first; int was=it.second; if(y==p)continue; ll w=wei[was]; h[y]=h[x]+w; par[y]=x; dfs(y,x); if(dp[y][0]+w > dp[x][0]) { dp[x][1]=dp[x][0]; dp[x][0]=dp[y][0]+w; } else{ dp[x][1]=max(dp[x][1],dp[y][0]+w); } } ans=max(ans,dp[x][0]+dp[x][1]); } int32_t main() { ll n,q,w; cin>>n>>q>>w; for(int i=0;i<n-1;i++) { ll a,b,w; cin>>a>>b>>w; wei[i]=w; edg[i]={a,b}; ma[a].pb({b,i}); ma[b].pb({a,i}); } h[1]=1; dfs(1); ans=0; while(q--) { ll d,nw; cin>>d>>nw; d=(d+ans)%(n-1); nw=(nw+ans)%w; wei[d]=nw; ans=0; dfs(1); cout<<ans<<endl; } }
#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...