#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;
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);
}
ll last=0;
while(q--){
ll d,e;
cin>>d>>e;
d=(d+last)%(n-1);
e=(e+last)%W;
c[d]=e;
mx=-1;
dfs(1,1,0);
mx=-1,
dfs(node,node,0);
last=mx;
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... |