#include <bits/stdc++.h>
#define pb push_back
#define fst first
#define snd second
#define fore(i,a,b) for(int i=a,pao=b;i<pao;++i)
#define SZ(x) ((int)x.size())
#define ALL(x) x.begin(),x.end()
#define mset(a,v) memset((a),(v),sizeof(a))
#define FIN ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
using namespace std;
typedef long long ll;
#define int long long
const int MAXN=1e5+9;
const ll INF=1e18;
int tim=0,n,in[MAXN],out[MAXN],z[MAXN],up[MAXN],ew[MAXN];
vector<tuple<int,int,int>>adj[MAXN];
struct Nodo{
ll f,s,lz;
Nodo(){
f=s=lz=0;
}
Nodo(ll a,ll b){
f=a,s=b;
}
};
Nodo st[MAXN*4];
void apply(int v,ll x){
st[v].lz+=x;
st[v].f+=x;
st[v].s+=x;
}
void push(int v){
apply(v*2,st[v].lz);
apply(v*2+1,st[v].lz);
st[v].lz=0;
}
void upd(int ts,int te,int x,int v=1,int s=0,int e=n-1){
if(e<ts||te<s)return;
if(ts<=s&&e<=te){
apply(v,x);
return;
}else{
push(v);
int m=(s+e)/2;
upd(ts,te,x,v*2,s,m);
upd(ts,te,x,v*2+1,m+1,e);
vector<ll>a={st[v*2].f,st[v*2].s,st[v*2+1].f,st[v*2+1].s};
sort(ALL(a));
reverse(ALL(a));
st[v]=Nodo(a[0],a[1]);
}
}
//~ Nodo que(int ts, int te,int v=1,int s=0,int e=n-1){
//~ if(e<ts||te<s)return;
//~ if(ts<=s&&e<=te){
//~ return st[v];
//~ }else{
//~ push(v);
//~ int m=(s+e)/2;
//~ Nodo l=que(ts,te,v*2,s,m);
//~ Nodo r=que(ts,te,v*2+1,m+1,e);
//~ vector<ll>a={l.f,l.s,r.f,r.s};
//~ sort(ALL(a));
//~ reverse(ALL(a));
//~ return Nodo(a[0],a[1]);
//~ }
//~ }
void dfs(int u,int p){
in[u]=tim++;
for(auto [v,c,i]:adj[u]){
if(v==p)continue;
up[i]=u; //el extremo superior
z[u]+=c; //valor del nodo
dfs(v,u);
}
out[u]=tim;
}
signed main(){FIN;
int q;
ll w;
cin>>n>>q>>w;
fore(i,0,n-1){
int u,v;
ll c;
cin>>u>>v>>c;
adj[u].pb({v,c,i});
adj[v].pb({u,c,i});
ew[i]=c;
}
dfs(1,1);
fore(i,1,n+1){
upd(in[i],out[i],z[i]);
}
ll last=0;
while(q--){
ll d_, e_;
cin>>d_>>e_;
ll d=(d_+last)%(n-1);
ll e=(e_+last)%w;
ll diff=e-ew[d];
upd(in[up[d]],out[up[d]],diff);
ew[d]=e;
ll ans=st[1].f+st[1].s;
cout<<ans<<endl;
last=ans;
}
}
| # | 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... |