This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define fi first
#define se second
#define beg begin
#define siz size()
#define fastio cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false);
#define endl '\n'
#define ins insert
#define log LOG
const ll inf = 1e9;
const ll mod = 10289;
const int maxn=5004+6;
const int log=24;
ll n,q,vis[maxn],dis[maxn],w;
vector<ll>adj[maxn];
map<pll,ll>x;
vector<pll>ed;
void dfs(ll v,ll p){
for(auto u:adj[v]){
if(p==u)continue;
dis[u]=dis[v]+x[{u,v}];
dfs(u,v);
}
}
int main(){
fastio
cin>>n>>q>>w;
for(int i=1;i<n;i++){
ll a,b,c;
cin>>a>>b>>c;
x[{a,b}]=c;
x[{b,a}]=c;
ed.pb({a,b});
adj[a].pb(b);adj[b].pb(a);
}
ll ld=0;
while(q--){
ll d,e;
cin>>d>>e;d+=ld;e+=ld;d%=(n-1);e%=w;
ll u=ed[d].fi,v=ed[d].se;
x[{u,v}]=e;x[{v,u}]=e;
ll mx=0;dis[1]=0;
//fill(dis,dis+n+2,0);
dfs(1,-1);
for(int i=0;i<=n;i++){
if(dis[i]>dis[mx])mx=i;
}dis[mx]=0;
// fill(dis,dis+n+2,0);
dfs(mx,-1);
for(int i=0;i<=n;i++){
if(dis[i]>dis[mx])mx=i;
}
cout<<dis[mx]<<endl;
ld=dis[mx];
}
}
# | 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... |