#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=22; // ?
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);
}
int main(){
// ios_base::sync_with_stdio(0),cin.tie(NULL),cout.tie(NULL);
int q; ll W;
scanf("%d%d%lld",&n,&q,&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;
scanf("%d%lld",&d,&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]);
}
last = *(--bigset.end());
printf("%lld\n",last);
// cout<<(last = *(--bigset.end()))<<"\n";
}
}
Compilation message
diameter.cpp: In function 'int main()':
diameter.cpp:91:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
91 | scanf("%d%d%lld",&n,&q,&W);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~
diameter.cpp:122:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
122 | scanf("%d%lld",&d,&len);
| ~~~~~^~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9812 KB |
Output is correct |
2 |
Correct |
6 ms |
9824 KB |
Output is correct |
3 |
Correct |
6 ms |
9940 KB |
Output is correct |
4 |
Correct |
6 ms |
9812 KB |
Output is correct |
5 |
Correct |
5 ms |
9812 KB |
Output is correct |
6 |
Correct |
6 ms |
9852 KB |
Output is correct |
7 |
Correct |
6 ms |
9940 KB |
Output is correct |
8 |
Correct |
5 ms |
9940 KB |
Output is correct |
9 |
Correct |
5 ms |
9956 KB |
Output is correct |
10 |
Correct |
6 ms |
9956 KB |
Output is correct |
11 |
Correct |
5 ms |
9940 KB |
Output is correct |
12 |
Correct |
6 ms |
9956 KB |
Output is correct |
13 |
Correct |
6 ms |
10020 KB |
Output is correct |
14 |
Correct |
6 ms |
9940 KB |
Output is correct |
15 |
Correct |
5 ms |
9956 KB |
Output is correct |
16 |
Correct |
5 ms |
9940 KB |
Output is correct |
17 |
Correct |
6 ms |
9940 KB |
Output is correct |
18 |
Correct |
7 ms |
9956 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9812 KB |
Output is correct |
2 |
Correct |
6 ms |
9824 KB |
Output is correct |
3 |
Correct |
6 ms |
9940 KB |
Output is correct |
4 |
Correct |
6 ms |
9812 KB |
Output is correct |
5 |
Correct |
5 ms |
9812 KB |
Output is correct |
6 |
Correct |
6 ms |
9852 KB |
Output is correct |
7 |
Correct |
6 ms |
9940 KB |
Output is correct |
8 |
Correct |
5 ms |
9940 KB |
Output is correct |
9 |
Correct |
5 ms |
9956 KB |
Output is correct |
10 |
Correct |
6 ms |
9956 KB |
Output is correct |
11 |
Correct |
5 ms |
9940 KB |
Output is correct |
12 |
Correct |
6 ms |
9956 KB |
Output is correct |
13 |
Correct |
6 ms |
10020 KB |
Output is correct |
14 |
Correct |
6 ms |
9940 KB |
Output is correct |
15 |
Correct |
5 ms |
9956 KB |
Output is correct |
16 |
Correct |
5 ms |
9940 KB |
Output is correct |
17 |
Correct |
6 ms |
9940 KB |
Output is correct |
18 |
Correct |
7 ms |
9956 KB |
Output is correct |
19 |
Correct |
31 ms |
10752 KB |
Output is correct |
20 |
Correct |
34 ms |
10736 KB |
Output is correct |
21 |
Correct |
36 ms |
10800 KB |
Output is correct |
22 |
Correct |
39 ms |
10820 KB |
Output is correct |
23 |
Correct |
72 ms |
14568 KB |
Output is correct |
24 |
Correct |
73 ms |
15180 KB |
Output is correct |
25 |
Correct |
90 ms |
15124 KB |
Output is correct |
26 |
Correct |
93 ms |
15720 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9684 KB |
Output is correct |
2 |
Correct |
5 ms |
9684 KB |
Output is correct |
3 |
Correct |
6 ms |
9812 KB |
Output is correct |
4 |
Correct |
18 ms |
9940 KB |
Output is correct |
5 |
Correct |
63 ms |
10356 KB |
Output is correct |
6 |
Correct |
6 ms |
9700 KB |
Output is correct |
7 |
Correct |
6 ms |
9832 KB |
Output is correct |
8 |
Correct |
6 ms |
9812 KB |
Output is correct |
9 |
Correct |
7 ms |
9940 KB |
Output is correct |
10 |
Correct |
29 ms |
10068 KB |
Output is correct |
11 |
Correct |
113 ms |
10508 KB |
Output is correct |
12 |
Correct |
12 ms |
11092 KB |
Output is correct |
13 |
Correct |
12 ms |
11092 KB |
Output is correct |
14 |
Correct |
15 ms |
11284 KB |
Output is correct |
15 |
Correct |
37 ms |
11356 KB |
Output is correct |
16 |
Correct |
127 ms |
11936 KB |
Output is correct |
17 |
Correct |
175 ms |
35520 KB |
Output is correct |
18 |
Correct |
174 ms |
35492 KB |
Output is correct |
19 |
Correct |
172 ms |
35512 KB |
Output is correct |
20 |
Correct |
214 ms |
35692 KB |
Output is correct |
21 |
Correct |
427 ms |
36068 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
12 ms |
10708 KB |
Output is correct |
2 |
Correct |
46 ms |
10788 KB |
Output is correct |
3 |
Correct |
222 ms |
11080 KB |
Output is correct |
4 |
Correct |
370 ms |
11388 KB |
Output is correct |
5 |
Correct |
59 ms |
20172 KB |
Output is correct |
6 |
Correct |
120 ms |
20324 KB |
Output is correct |
7 |
Correct |
407 ms |
20724 KB |
Output is correct |
8 |
Correct |
795 ms |
21048 KB |
Output is correct |
9 |
Correct |
284 ms |
60708 KB |
Output is correct |
10 |
Correct |
388 ms |
60848 KB |
Output is correct |
11 |
Correct |
934 ms |
61028 KB |
Output is correct |
12 |
Correct |
1505 ms |
61392 KB |
Output is correct |
13 |
Correct |
587 ms |
116400 KB |
Output is correct |
14 |
Correct |
729 ms |
116528 KB |
Output is correct |
15 |
Correct |
1336 ms |
116916 KB |
Output is correct |
16 |
Correct |
2055 ms |
117136 KB |
Output is correct |
17 |
Correct |
4160 ms |
117032 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4244 ms |
119176 KB |
Output is correct |
2 |
Correct |
4247 ms |
119280 KB |
Output is correct |
3 |
Correct |
4054 ms |
119076 KB |
Output is correct |
4 |
Correct |
4172 ms |
118700 KB |
Output is correct |
5 |
Correct |
4070 ms |
114916 KB |
Output is correct |
6 |
Correct |
3374 ms |
93004 KB |
Output is correct |
7 |
Correct |
4411 ms |
124928 KB |
Output is correct |
8 |
Correct |
4440 ms |
124996 KB |
Output is correct |
9 |
Correct |
4550 ms |
125040 KB |
Output is correct |
10 |
Correct |
4336 ms |
124596 KB |
Output is correct |
11 |
Correct |
4282 ms |
120272 KB |
Output is correct |
12 |
Correct |
3840 ms |
97256 KB |
Output is correct |
13 |
Correct |
4734 ms |
131908 KB |
Output is correct |
14 |
Correct |
4619 ms |
132016 KB |
Output is correct |
15 |
Correct |
4647 ms |
131892 KB |
Output is correct |
16 |
Correct |
4705 ms |
131484 KB |
Output is correct |
17 |
Correct |
4515 ms |
126340 KB |
Output is correct |
18 |
Correct |
3752 ms |
100052 KB |
Output is correct |
19 |
Correct |
4748 ms |
132052 KB |
Output is correct |
20 |
Correct |
4570 ms |
131904 KB |
Output is correct |
21 |
Correct |
4717 ms |
131892 KB |
Output is correct |
22 |
Correct |
4703 ms |
131524 KB |
Output is correct |
23 |
Correct |
4590 ms |
126436 KB |
Output is correct |
24 |
Correct |
3995 ms |
99976 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
9812 KB |
Output is correct |
2 |
Correct |
6 ms |
9824 KB |
Output is correct |
3 |
Correct |
6 ms |
9940 KB |
Output is correct |
4 |
Correct |
6 ms |
9812 KB |
Output is correct |
5 |
Correct |
5 ms |
9812 KB |
Output is correct |
6 |
Correct |
6 ms |
9852 KB |
Output is correct |
7 |
Correct |
6 ms |
9940 KB |
Output is correct |
8 |
Correct |
5 ms |
9940 KB |
Output is correct |
9 |
Correct |
5 ms |
9956 KB |
Output is correct |
10 |
Correct |
6 ms |
9956 KB |
Output is correct |
11 |
Correct |
5 ms |
9940 KB |
Output is correct |
12 |
Correct |
6 ms |
9956 KB |
Output is correct |
13 |
Correct |
6 ms |
10020 KB |
Output is correct |
14 |
Correct |
6 ms |
9940 KB |
Output is correct |
15 |
Correct |
5 ms |
9956 KB |
Output is correct |
16 |
Correct |
5 ms |
9940 KB |
Output is correct |
17 |
Correct |
6 ms |
9940 KB |
Output is correct |
18 |
Correct |
7 ms |
9956 KB |
Output is correct |
19 |
Correct |
31 ms |
10752 KB |
Output is correct |
20 |
Correct |
34 ms |
10736 KB |
Output is correct |
21 |
Correct |
36 ms |
10800 KB |
Output is correct |
22 |
Correct |
39 ms |
10820 KB |
Output is correct |
23 |
Correct |
72 ms |
14568 KB |
Output is correct |
24 |
Correct |
73 ms |
15180 KB |
Output is correct |
25 |
Correct |
90 ms |
15124 KB |
Output is correct |
26 |
Correct |
93 ms |
15720 KB |
Output is correct |
27 |
Correct |
5 ms |
9684 KB |
Output is correct |
28 |
Correct |
5 ms |
9684 KB |
Output is correct |
29 |
Correct |
6 ms |
9812 KB |
Output is correct |
30 |
Correct |
18 ms |
9940 KB |
Output is correct |
31 |
Correct |
63 ms |
10356 KB |
Output is correct |
32 |
Correct |
6 ms |
9700 KB |
Output is correct |
33 |
Correct |
6 ms |
9832 KB |
Output is correct |
34 |
Correct |
6 ms |
9812 KB |
Output is correct |
35 |
Correct |
7 ms |
9940 KB |
Output is correct |
36 |
Correct |
29 ms |
10068 KB |
Output is correct |
37 |
Correct |
113 ms |
10508 KB |
Output is correct |
38 |
Correct |
12 ms |
11092 KB |
Output is correct |
39 |
Correct |
12 ms |
11092 KB |
Output is correct |
40 |
Correct |
15 ms |
11284 KB |
Output is correct |
41 |
Correct |
37 ms |
11356 KB |
Output is correct |
42 |
Correct |
127 ms |
11936 KB |
Output is correct |
43 |
Correct |
175 ms |
35520 KB |
Output is correct |
44 |
Correct |
174 ms |
35492 KB |
Output is correct |
45 |
Correct |
172 ms |
35512 KB |
Output is correct |
46 |
Correct |
214 ms |
35692 KB |
Output is correct |
47 |
Correct |
427 ms |
36068 KB |
Output is correct |
48 |
Correct |
12 ms |
10708 KB |
Output is correct |
49 |
Correct |
46 ms |
10788 KB |
Output is correct |
50 |
Correct |
222 ms |
11080 KB |
Output is correct |
51 |
Correct |
370 ms |
11388 KB |
Output is correct |
52 |
Correct |
59 ms |
20172 KB |
Output is correct |
53 |
Correct |
120 ms |
20324 KB |
Output is correct |
54 |
Correct |
407 ms |
20724 KB |
Output is correct |
55 |
Correct |
795 ms |
21048 KB |
Output is correct |
56 |
Correct |
284 ms |
60708 KB |
Output is correct |
57 |
Correct |
388 ms |
60848 KB |
Output is correct |
58 |
Correct |
934 ms |
61028 KB |
Output is correct |
59 |
Correct |
1505 ms |
61392 KB |
Output is correct |
60 |
Correct |
587 ms |
116400 KB |
Output is correct |
61 |
Correct |
729 ms |
116528 KB |
Output is correct |
62 |
Correct |
1336 ms |
116916 KB |
Output is correct |
63 |
Correct |
2055 ms |
117136 KB |
Output is correct |
64 |
Correct |
4160 ms |
117032 KB |
Output is correct |
65 |
Correct |
4244 ms |
119176 KB |
Output is correct |
66 |
Correct |
4247 ms |
119280 KB |
Output is correct |
67 |
Correct |
4054 ms |
119076 KB |
Output is correct |
68 |
Correct |
4172 ms |
118700 KB |
Output is correct |
69 |
Correct |
4070 ms |
114916 KB |
Output is correct |
70 |
Correct |
3374 ms |
93004 KB |
Output is correct |
71 |
Correct |
4411 ms |
124928 KB |
Output is correct |
72 |
Correct |
4440 ms |
124996 KB |
Output is correct |
73 |
Correct |
4550 ms |
125040 KB |
Output is correct |
74 |
Correct |
4336 ms |
124596 KB |
Output is correct |
75 |
Correct |
4282 ms |
120272 KB |
Output is correct |
76 |
Correct |
3840 ms |
97256 KB |
Output is correct |
77 |
Correct |
4734 ms |
131908 KB |
Output is correct |
78 |
Correct |
4619 ms |
132016 KB |
Output is correct |
79 |
Correct |
4647 ms |
131892 KB |
Output is correct |
80 |
Correct |
4705 ms |
131484 KB |
Output is correct |
81 |
Correct |
4515 ms |
126340 KB |
Output is correct |
82 |
Correct |
3752 ms |
100052 KB |
Output is correct |
83 |
Correct |
4748 ms |
132052 KB |
Output is correct |
84 |
Correct |
4570 ms |
131904 KB |
Output is correct |
85 |
Correct |
4717 ms |
131892 KB |
Output is correct |
86 |
Correct |
4703 ms |
131524 KB |
Output is correct |
87 |
Correct |
4590 ms |
126436 KB |
Output is correct |
88 |
Correct |
3995 ms |
99976 KB |
Output is correct |
89 |
Correct |
4191 ms |
118988 KB |
Output is correct |
90 |
Correct |
4223 ms |
120128 KB |
Output is correct |
91 |
Correct |
4399 ms |
122892 KB |
Output is correct |
92 |
Correct |
4440 ms |
124308 KB |
Output is correct |
93 |
Correct |
4671 ms |
126908 KB |
Output is correct |
94 |
Correct |
4690 ms |
127556 KB |
Output is correct |
95 |
Correct |
4550 ms |
129372 KB |
Output is correct |
96 |
Correct |
4720 ms |
131964 KB |
Output is correct |
97 |
Correct |
4782 ms |
132624 KB |
Output is correct |
98 |
Correct |
4653 ms |
134896 KB |
Output is correct |
99 |
Correct |
4773 ms |
132320 KB |
Output is correct |
100 |
Correct |
4803 ms |
132232 KB |
Output is correct |