#include <bits/stdc++.h>
#define ll long long
#define left (h<<1),l,((l+r)>>1)
#define right ((h<<1)|1),((l+r)>>1) + 1,r
#define pb push_back
#define pii pair<int,int>
#define s second
#define f first
using namespace std;
const int N = 100005,M=25; // ?
vector <pii> v[N];
vector <int> con[N];
multiset <ll> st[N],bigset;
ll value[N],wi[N];
int vis[N],xi[N],yi[N],comp[M],DP[N];
int n,centroid,CH,L;
int tin[M][N],tout[M][N],PAR[M][N],dep[M][N];
ll t[M][4*N],add[M][4*N];
multiset <ll> :: iterator it;
void push(int k,int h){
if (!add[k][h]) return;
add[k][h*2] += add[k][h];
t[k][h*2] += add[k][h];
add[k][h*2+1] += add[k][h];
t[k][h*2+1] += add[k][h];
add[k][h] = 0LL;
}
void upd(int k,int h,int l,int r,int L,int R,ll val){
if (r < L || R < l) return;
if (L <= l && r <= R){
t[k][h] += val;
add[k][h] += val;
return;
}
push(k,h);
upd(k,left,L,R,val);
upd(k,right,L,R,val);
t[k][h] = max(t[k][h*2],t[k][h*2+1]);
}
ll get(int k,int h,int l,int r,int L,int R){
if (r < L || R < l) return 0LL;
if (L <= l && r <= R) return t[k][h];
push(k,h);
return max(get(k,left,L,R),get(k,right,L,R));
}
int dfs(int x,int par,int root,int m){
int s = 1;
for (auto [to,idx]: v[x])
if (to != par && !vis[to]) s += dfs(to,x,root, m);
if (centroid == -1 && (x == root || s*2 >= m)) centroid = x;
return s;
}
void DFS(int x,int par,int id,int cent){
tin[id][x] = ++comp[id];
PAR[id][x] = CH;
for (auto [to,q]: v[x]){
if (to == par || vis[to]) continue;
con[q].pb(cent);
dep[id][to] = dep[id][x] + 1;
if (dep[id][x] == 1) CH = to;
DFS(to,x,id,cent);
upd(id,1,1,n,tin[id][to],tout[id][to],+wi[q]);
}
tout[id][x] = comp[id];
}
void C(int x,int m,int lvl){
centroid = -1;
dfs(x, x, x, m);
vis[centroid] = 1;
L = max(L,lvl);
DP[centroid] = lvl;
dep[lvl][centroid] = 1;
DFS(centroid,centroid,lvl,centroid);
for (auto [to,idx]: v[centroid])
if (!vis[to]) C(to,m/2,lvl + 1);
}
signed main(){
ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL);
int q; ll W;
cin>>n>>q>>W;
for (int i = 1; i < n; i++){
cin>>xi[i]>>yi[i]>>wi[i];
v[xi[i]].pb({yi[i],i});
v[yi[i]].pb({xi[i],i});
}
C(1,n,1);
for (int id = 1; id <= L; id++){
for (int root = 1; root <= n; root++){
if (dep[id][root] != 1) continue;
for (auto [to,p]: v[root]){
if (dep[id][to] != 2) continue;
st[root].insert(get(id,1,1,n,tin[id][to],tout[id][to]));
}
if (st[root].size() == 1) value[root] = *st[root].begin();
else if (st[root].size() > 1){
it = --st[root].end(); --it;
value[root] = *(--st[root].end()) + *it;
}
bigset.insert(value[root]);
}
}
ll last=0LL;
while (q--){
int d; ll len;
cin>>d>>len;
d = (d + last)%(n-1) + 1;
len = (len + last)%W;
int x = xi[d],y =yi[d]; ll delta = len - wi[d];
wi[d] = len;
for (int root: con[d]){
bigset.erase(bigset.find(value[root]));
int id = DP[root];
if (dep[id][y] > dep[id][x]){
int parent = PAR[id][y];
st[root].erase(st[root].find(get(id,1,1,n,tin[id][parent],tout[id][parent])));
upd(id,1,1,n,tin[id][y],tout[id][y],delta);
st[root].insert(get(id,1,1,n,tin[id][parent],tout[id][parent]));
}
else{
int parent = PAR[id][x];
st[root].erase(st[root].find(get(id,1,1,n,tin[id][parent],tout[id][parent])));
upd(id,1,1,n,tin[id][x],tout[id][x],delta);
st[root].insert(get(id,1,1,n,tin[id][parent],tout[id][parent]));
}
if (st[root].size() == 1) value[root] = *st[root].begin();
else if (st[root].size() > 1){
it = --st[root].end(); --it;
value[root] = *(--st[root].end()) + *it;
}
bigset.insert(value[root]);
}
cout<<(last = *(--bigset.end()))<<"\n";
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9812 KB |
Output is correct |
2 |
Correct |
7 ms |
9852 KB |
Output is correct |
3 |
Correct |
7 ms |
9852 KB |
Output is correct |
4 |
Correct |
5 ms |
9792 KB |
Output is correct |
5 |
Correct |
6 ms |
9852 KB |
Output is correct |
6 |
Correct |
6 ms |
9848 KB |
Output is correct |
7 |
Correct |
5 ms |
9940 KB |
Output is correct |
8 |
Correct |
5 ms |
9940 KB |
Output is correct |
9 |
Correct |
6 ms |
9984 KB |
Output is correct |
10 |
Correct |
5 ms |
9940 KB |
Output is correct |
11 |
Correct |
5 ms |
9940 KB |
Output is correct |
12 |
Correct |
5 ms |
9940 KB |
Output is correct |
13 |
Correct |
5 ms |
10008 KB |
Output is correct |
14 |
Correct |
5 ms |
9940 KB |
Output is correct |
15 |
Correct |
6 ms |
9976 KB |
Output is correct |
16 |
Correct |
6 ms |
10052 KB |
Output is correct |
17 |
Correct |
7 ms |
9980 KB |
Output is correct |
18 |
Correct |
6 ms |
10060 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9812 KB |
Output is correct |
2 |
Correct |
7 ms |
9852 KB |
Output is correct |
3 |
Correct |
7 ms |
9852 KB |
Output is correct |
4 |
Correct |
5 ms |
9792 KB |
Output is correct |
5 |
Correct |
6 ms |
9852 KB |
Output is correct |
6 |
Correct |
6 ms |
9848 KB |
Output is correct |
7 |
Correct |
5 ms |
9940 KB |
Output is correct |
8 |
Correct |
5 ms |
9940 KB |
Output is correct |
9 |
Correct |
6 ms |
9984 KB |
Output is correct |
10 |
Correct |
5 ms |
9940 KB |
Output is correct |
11 |
Correct |
5 ms |
9940 KB |
Output is correct |
12 |
Correct |
5 ms |
9940 KB |
Output is correct |
13 |
Correct |
5 ms |
10008 KB |
Output is correct |
14 |
Correct |
5 ms |
9940 KB |
Output is correct |
15 |
Correct |
6 ms |
9976 KB |
Output is correct |
16 |
Correct |
6 ms |
10052 KB |
Output is correct |
17 |
Correct |
7 ms |
9980 KB |
Output is correct |
18 |
Correct |
6 ms |
10060 KB |
Output is correct |
19 |
Correct |
32 ms |
10708 KB |
Output is correct |
20 |
Correct |
35 ms |
10772 KB |
Output is correct |
21 |
Correct |
38 ms |
10804 KB |
Output is correct |
22 |
Correct |
38 ms |
10836 KB |
Output is correct |
23 |
Correct |
56 ms |
14540 KB |
Output is correct |
24 |
Correct |
79 ms |
15120 KB |
Output is correct |
25 |
Correct |
78 ms |
15268 KB |
Output is correct |
26 |
Correct |
79 ms |
15752 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9812 KB |
Output is correct |
2 |
Correct |
5 ms |
9760 KB |
Output is correct |
3 |
Correct |
6 ms |
9764 KB |
Output is correct |
4 |
Correct |
16 ms |
9940 KB |
Output is correct |
5 |
Correct |
59 ms |
10840 KB |
Output is correct |
6 |
Correct |
5 ms |
9812 KB |
Output is correct |
7 |
Correct |
6 ms |
9852 KB |
Output is correct |
8 |
Correct |
6 ms |
9940 KB |
Output is correct |
9 |
Correct |
7 ms |
9948 KB |
Output is correct |
10 |
Correct |
22 ms |
10116 KB |
Output is correct |
11 |
Correct |
85 ms |
11212 KB |
Output is correct |
12 |
Correct |
10 ms |
11132 KB |
Output is correct |
13 |
Correct |
10 ms |
11136 KB |
Output is correct |
14 |
Correct |
12 ms |
11228 KB |
Output is correct |
15 |
Correct |
32 ms |
11436 KB |
Output is correct |
16 |
Correct |
129 ms |
12556 KB |
Output is correct |
17 |
Correct |
126 ms |
36392 KB |
Output is correct |
18 |
Correct |
130 ms |
36376 KB |
Output is correct |
19 |
Correct |
132 ms |
36516 KB |
Output is correct |
20 |
Correct |
180 ms |
36824 KB |
Output is correct |
21 |
Correct |
399 ms |
38116 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
10708 KB |
Output is correct |
2 |
Correct |
54 ms |
10828 KB |
Output is correct |
3 |
Correct |
194 ms |
11472 KB |
Output is correct |
4 |
Correct |
388 ms |
12104 KB |
Output is correct |
5 |
Correct |
49 ms |
20300 KB |
Output is correct |
6 |
Correct |
118 ms |
20364 KB |
Output is correct |
7 |
Correct |
392 ms |
21076 KB |
Output is correct |
8 |
Correct |
787 ms |
21860 KB |
Output is correct |
9 |
Correct |
241 ms |
61260 KB |
Output is correct |
10 |
Correct |
355 ms |
61460 KB |
Output is correct |
11 |
Correct |
813 ms |
62088 KB |
Output is correct |
12 |
Correct |
1432 ms |
62864 KB |
Output is correct |
13 |
Correct |
568 ms |
117836 KB |
Output is correct |
14 |
Correct |
663 ms |
117936 KB |
Output is correct |
15 |
Correct |
1254 ms |
118720 KB |
Output is correct |
16 |
Correct |
2064 ms |
119380 KB |
Output is correct |
17 |
Correct |
4030 ms |
119248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4112 ms |
122848 KB |
Output is correct |
2 |
Correct |
3968 ms |
123212 KB |
Output is correct |
3 |
Correct |
3962 ms |
122984 KB |
Output is correct |
4 |
Correct |
3933 ms |
122488 KB |
Output is correct |
5 |
Correct |
3997 ms |
118940 KB |
Output is correct |
6 |
Correct |
3429 ms |
96896 KB |
Output is correct |
7 |
Correct |
4402 ms |
128936 KB |
Output is correct |
8 |
Correct |
4366 ms |
128876 KB |
Output is correct |
9 |
Correct |
4402 ms |
129016 KB |
Output is correct |
10 |
Correct |
4294 ms |
128524 KB |
Output is correct |
11 |
Correct |
4205 ms |
124220 KB |
Output is correct |
12 |
Correct |
3765 ms |
101256 KB |
Output is correct |
13 |
Correct |
4562 ms |
135832 KB |
Output is correct |
14 |
Correct |
4617 ms |
135812 KB |
Output is correct |
15 |
Correct |
4551 ms |
135848 KB |
Output is correct |
16 |
Correct |
4532 ms |
135584 KB |
Output is correct |
17 |
Correct |
4545 ms |
130240 KB |
Output is correct |
18 |
Correct |
3793 ms |
104024 KB |
Output is correct |
19 |
Correct |
4639 ms |
135652 KB |
Output is correct |
20 |
Correct |
4510 ms |
135684 KB |
Output is correct |
21 |
Correct |
4579 ms |
135808 KB |
Output is correct |
22 |
Correct |
4689 ms |
135452 KB |
Output is correct |
23 |
Correct |
4423 ms |
130432 KB |
Output is correct |
24 |
Correct |
3752 ms |
103992 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9812 KB |
Output is correct |
2 |
Correct |
7 ms |
9852 KB |
Output is correct |
3 |
Correct |
7 ms |
9852 KB |
Output is correct |
4 |
Correct |
5 ms |
9792 KB |
Output is correct |
5 |
Correct |
6 ms |
9852 KB |
Output is correct |
6 |
Correct |
6 ms |
9848 KB |
Output is correct |
7 |
Correct |
5 ms |
9940 KB |
Output is correct |
8 |
Correct |
5 ms |
9940 KB |
Output is correct |
9 |
Correct |
6 ms |
9984 KB |
Output is correct |
10 |
Correct |
5 ms |
9940 KB |
Output is correct |
11 |
Correct |
5 ms |
9940 KB |
Output is correct |
12 |
Correct |
5 ms |
9940 KB |
Output is correct |
13 |
Correct |
5 ms |
10008 KB |
Output is correct |
14 |
Correct |
5 ms |
9940 KB |
Output is correct |
15 |
Correct |
6 ms |
9976 KB |
Output is correct |
16 |
Correct |
6 ms |
10052 KB |
Output is correct |
17 |
Correct |
7 ms |
9980 KB |
Output is correct |
18 |
Correct |
6 ms |
10060 KB |
Output is correct |
19 |
Correct |
32 ms |
10708 KB |
Output is correct |
20 |
Correct |
35 ms |
10772 KB |
Output is correct |
21 |
Correct |
38 ms |
10804 KB |
Output is correct |
22 |
Correct |
38 ms |
10836 KB |
Output is correct |
23 |
Correct |
56 ms |
14540 KB |
Output is correct |
24 |
Correct |
79 ms |
15120 KB |
Output is correct |
25 |
Correct |
78 ms |
15268 KB |
Output is correct |
26 |
Correct |
79 ms |
15752 KB |
Output is correct |
27 |
Correct |
5 ms |
9812 KB |
Output is correct |
28 |
Correct |
5 ms |
9760 KB |
Output is correct |
29 |
Correct |
6 ms |
9764 KB |
Output is correct |
30 |
Correct |
16 ms |
9940 KB |
Output is correct |
31 |
Correct |
59 ms |
10840 KB |
Output is correct |
32 |
Correct |
5 ms |
9812 KB |
Output is correct |
33 |
Correct |
6 ms |
9852 KB |
Output is correct |
34 |
Correct |
6 ms |
9940 KB |
Output is correct |
35 |
Correct |
7 ms |
9948 KB |
Output is correct |
36 |
Correct |
22 ms |
10116 KB |
Output is correct |
37 |
Correct |
85 ms |
11212 KB |
Output is correct |
38 |
Correct |
10 ms |
11132 KB |
Output is correct |
39 |
Correct |
10 ms |
11136 KB |
Output is correct |
40 |
Correct |
12 ms |
11228 KB |
Output is correct |
41 |
Correct |
32 ms |
11436 KB |
Output is correct |
42 |
Correct |
129 ms |
12556 KB |
Output is correct |
43 |
Correct |
126 ms |
36392 KB |
Output is correct |
44 |
Correct |
130 ms |
36376 KB |
Output is correct |
45 |
Correct |
132 ms |
36516 KB |
Output is correct |
46 |
Correct |
180 ms |
36824 KB |
Output is correct |
47 |
Correct |
399 ms |
38116 KB |
Output is correct |
48 |
Correct |
11 ms |
10708 KB |
Output is correct |
49 |
Correct |
54 ms |
10828 KB |
Output is correct |
50 |
Correct |
194 ms |
11472 KB |
Output is correct |
51 |
Correct |
388 ms |
12104 KB |
Output is correct |
52 |
Correct |
49 ms |
20300 KB |
Output is correct |
53 |
Correct |
118 ms |
20364 KB |
Output is correct |
54 |
Correct |
392 ms |
21076 KB |
Output is correct |
55 |
Correct |
787 ms |
21860 KB |
Output is correct |
56 |
Correct |
241 ms |
61260 KB |
Output is correct |
57 |
Correct |
355 ms |
61460 KB |
Output is correct |
58 |
Correct |
813 ms |
62088 KB |
Output is correct |
59 |
Correct |
1432 ms |
62864 KB |
Output is correct |
60 |
Correct |
568 ms |
117836 KB |
Output is correct |
61 |
Correct |
663 ms |
117936 KB |
Output is correct |
62 |
Correct |
1254 ms |
118720 KB |
Output is correct |
63 |
Correct |
2064 ms |
119380 KB |
Output is correct |
64 |
Correct |
4030 ms |
119248 KB |
Output is correct |
65 |
Correct |
4112 ms |
122848 KB |
Output is correct |
66 |
Correct |
3968 ms |
123212 KB |
Output is correct |
67 |
Correct |
3962 ms |
122984 KB |
Output is correct |
68 |
Correct |
3933 ms |
122488 KB |
Output is correct |
69 |
Correct |
3997 ms |
118940 KB |
Output is correct |
70 |
Correct |
3429 ms |
96896 KB |
Output is correct |
71 |
Correct |
4402 ms |
128936 KB |
Output is correct |
72 |
Correct |
4366 ms |
128876 KB |
Output is correct |
73 |
Correct |
4402 ms |
129016 KB |
Output is correct |
74 |
Correct |
4294 ms |
128524 KB |
Output is correct |
75 |
Correct |
4205 ms |
124220 KB |
Output is correct |
76 |
Correct |
3765 ms |
101256 KB |
Output is correct |
77 |
Correct |
4562 ms |
135832 KB |
Output is correct |
78 |
Correct |
4617 ms |
135812 KB |
Output is correct |
79 |
Correct |
4551 ms |
135848 KB |
Output is correct |
80 |
Correct |
4532 ms |
135584 KB |
Output is correct |
81 |
Correct |
4545 ms |
130240 KB |
Output is correct |
82 |
Correct |
3793 ms |
104024 KB |
Output is correct |
83 |
Correct |
4639 ms |
135652 KB |
Output is correct |
84 |
Correct |
4510 ms |
135684 KB |
Output is correct |
85 |
Correct |
4579 ms |
135808 KB |
Output is correct |
86 |
Correct |
4689 ms |
135452 KB |
Output is correct |
87 |
Correct |
4423 ms |
130432 KB |
Output is correct |
88 |
Correct |
3752 ms |
103992 KB |
Output is correct |
89 |
Correct |
4086 ms |
122224 KB |
Output is correct |
90 |
Correct |
4242 ms |
123312 KB |
Output is correct |
91 |
Correct |
4703 ms |
126184 KB |
Output is correct |
92 |
Correct |
4681 ms |
127664 KB |
Output is correct |
93 |
Correct |
4571 ms |
130476 KB |
Output is correct |
94 |
Correct |
4762 ms |
131024 KB |
Output is correct |
95 |
Execution timed out |
5001 ms |
132808 KB |
Time limit exceeded |
96 |
Halted |
0 ms |
0 KB |
- |