#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |