#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
const int M = 1e5 + 1;
int dep[M];
set<pair<int,int>> nei[M];
void dfs(int u,int p=0)
{
for (auto [i,w]:nei[u])
if (i!=p)
dep[i]=dep[u]+w, dfs(i,u);
}
signed main()
{
ios::sync_with_stdio(0);
cin.tie(NULL), cout.tie(NULL);
int n,q,W;
cin>>n>>q>>W;
int u[n], v[n], w[n];
for (int i=0;i<n-1;i++)
{
cin>>u[i]>>v[i]>>w[i];
nei[u[i]].insert({v[i],w[i]});
nei[v[i]].insert({u[i],w[i]});
}
int ls=0;
while (q--)
{
int i, x;
cin>>i>>x;
i=(i+ls)%(n-1), x=(x+ls)%W;
nei[u[i]].erase({v[i],w[i]});
nei[v[i]].erase({u[i],w[i]});
w[i]=x;
nei[u[i]].insert({v[i],w[i]});
nei[v[i]].insert({u[i],w[i]});
dfs(1);
int u=1;
for (int i=1;i<=n;i++)
if (dep[i]>dep[u])u=i;
dep[u]=0, dfs(u);
u=0;
for (int i=1;i<=n;i++)
if (dep[i]>dep[u])u=i;
cout<<dep[u]<<endl;
}
return 0;
}
| # | 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... |