Submission #1104735

#TimeUsernameProblemLanguageResultExecution timeMemory
1104735sinataghizadehDynamic Diameter (CEOI19_diameter)C++14
24 / 100
4899 ms345160 KiB
#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=5002;
const int log=24;
int n,q,vis[maxn],dis[maxn],w,mx;
vector<int>adj[maxn];
ll x[maxn][maxn];
vector<pii>ed;
void dfs(int v,int p){
	for(auto u:adj[v]){
		if(p==u)continue;
		dis[u]=dis[v]+x[u][v];
		dfs(u,v);
	}
	if(dis[v]>dis[mx])mx=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);
	}
	int 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;
		mx=0;dis[1]=0;
		dfs(1,-1);
		dis[mx]=0;
		dfs(mx,-1);
		cout<<dis[mx]<<endl;
		ld=dis[mx];
	}
	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...