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;
int cost[5002][5002], dist[5002];
vector<int> adj[5002];
pair<int, int> E[5002];
const int INF = 1e9;
void dfs(int x, int p = -1)
{
for(int i : adj[x])
{
if(i == p) continue;
dist[i] = dist[x] + cost[x][i];
dfs(i, x);
}
}
int main()
{
ios::sync_with_stdio(false); cin.tie(NULL);
int n, q, w; cin >> n >> q >> w;
for(int i=0;i<n-1;i++)
{
int s, e, c; cin >> s >> e >> c;
E[i] = {s, e};
adj[s].push_back(e);
adj[e].push_back(s);
cost[s][e] = cost[e][s] = c;
}
int last = 0;
for(int i=1;i<=q;i++)
{
int d, e;
cin >> d >> e;
d = (d + last)%(n-1);
e = (e + last)%w;
int a = E[d].first, b = E[d].second;
cost[a][b] = cost[b][a] = e;
dist[1] = 0;
dfs(1);
int next = 1;
for(int i=1;i<=n;i++) if(dist[next] < dist[i]) next = i;
dist[next] = 0;
dfs(next);
int ans = 0;
for(int i=1;i<=n;i++) ans = max(ans, dist[i]);
cout << ans << "\n";
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... |