#include<bits/stdc++.h>
using ll = long long;
#define pll pair <ll,ll>
#define fi first
#define se second
#define sz(a) (ll((a).size()))
#define BIT(mask,i) (((mask) >> (i))&1)
#define MASK(i) (1LL << (i))
#define MP make_pair
using namespace std;
const ll bl_size = 3000;
ll n,m,q;
const ll MAXN = 1e5;
const ll MAXK = 17;
ll c[MAXN+100];
struct query{
ll l,r,id;
};
query all[MAXN+100];
ll ans[MAXN+100];
vector <ll> g[MAXN+100];
ll in[MAXN+100],out[MAXN+100];
ll timeDFS;
ll depth[MAXN+100];
ll sp[MAXK][MAXN+100];
bool anc(ll x,ll y){
return in[x] <= in[y] && in[y] <= out[x];
}
ll lca(ll x,ll y){
for (ll j = MAXK - 1;j >= 0;j --){
if (!anc(sp[j][x],y))x = sp[j][x];
}
if (!anc(x,y))x=sp[0][x];
return x;
}
void dfs(ll u,ll p){
in[u] = ++timeDFS;
sp[0][u] = p;
depth[u] = depth[p] + 1;
for (auto v:g[u]){
if (v==p)continue;
dfs(v,u);
}
out[u] = timeDFS;
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(nullptr);cout.tie(nullptr);
// freopen("JOISC.INP","r",stdin);
cin>>n>>m>>q;
for (ll i = 1;i < n;i ++){
ll u,v;
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs(1,1);
for (ll j = 1;j < MAXK;j ++){
for (ll i = 1;i <= n;i ++){
sp[j][i] = sp[j-1][sp[j-1][i]];
}
}
for (ll i = 1;i <= m;i ++)cin>>c[i];
for (ll i = 1;i <= q;i ++){
cin>>all[i].l>>all[i].r;
all[i].id = i;
}
sort(all+1,all+1+q,[](query x,query y){
x.l /= bl_size;
y.l /= bl_size;
if (x.l != y.l)return x.l<y.l;
else{
if ((x.l)&1)return x.r < y.r;
else return x.r > y.r;
}
});
ll cur_l = 1,cur_r = 1;
multiset <pll> tree({MP(in[c[1]],c[1])});
ll res = 1;
auto eval = [&](ll x) -> ll{
//evaluate if insert x
ll root = lca((*tree.begin()).se,(*tree.rbegin()).se);
if (anc(root,x)){
auto nxt = tree.lower_bound(MP(in[x],x));
if (nxt == tree.end()){
nxt = prev(nxt);
}
if (anc(x,(*nxt).se))return 0;
else {
ll lca1 = lca(x,(*nxt).se);
ll lca2 = 1;
if (nxt != tree.begin())lca2 = lca(x,(*prev(nxt)).se);
if (depth[lca2] > depth[lca1])lca1 = lca2;
return depth[x] - depth[lca1];
}
}
else{
return depth[x] + depth[root] - 2 * depth[lca(root,x)];
}
};
auto add = [&](ll x){
res += eval(x);
tree.insert(MP(in[x],x));
};
auto del = [&](ll x){
tree.erase(tree.find(MP(in[x],x)));
res -= eval(x);
};
for (ll i = 1;i <= q;i ++){
ll l = all[i].l,r = all[i].r;
while (cur_r < r){
cur_r++;
add(c[cur_r]);
//add cur_r
}
while (cur_l > l){
cur_l--;
add(c[cur_l]);
//add cur_l
}
while (cur_r > r){
//
del(c[cur_r]);
cur_r--;
}
while (cur_l < l){
//
del(c[cur_l]);
cur_l++;
}
ans[all[i].id] = res;
}
for (ll i = 1;i <= q;i ++)cout<<ans[i]<<'\n';
// cout<<'\n';
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
18780 KB |
Output is correct |
2 |
Correct |
3 ms |
18780 KB |
Output is correct |
3 |
Correct |
3 ms |
19028 KB |
Output is correct |
4 |
Correct |
8 ms |
18780 KB |
Output is correct |
5 |
Correct |
5 ms |
18784 KB |
Output is correct |
6 |
Correct |
6 ms |
18936 KB |
Output is correct |
7 |
Correct |
6 ms |
18780 KB |
Output is correct |
8 |
Correct |
6 ms |
18780 KB |
Output is correct |
9 |
Correct |
10 ms |
18780 KB |
Output is correct |
10 |
Correct |
8 ms |
18776 KB |
Output is correct |
11 |
Correct |
10 ms |
19032 KB |
Output is correct |
12 |
Correct |
4 ms |
18780 KB |
Output is correct |
13 |
Correct |
4 ms |
18780 KB |
Output is correct |
14 |
Correct |
3 ms |
18948 KB |
Output is correct |
15 |
Correct |
8 ms |
18992 KB |
Output is correct |
16 |
Correct |
7 ms |
18780 KB |
Output is correct |
17 |
Correct |
7 ms |
18776 KB |
Output is correct |
18 |
Correct |
7 ms |
18780 KB |
Output is correct |
19 |
Correct |
8 ms |
18780 KB |
Output is correct |
20 |
Correct |
8 ms |
18780 KB |
Output is correct |
21 |
Correct |
11 ms |
18780 KB |
Output is correct |
22 |
Correct |
10 ms |
19032 KB |
Output is correct |
23 |
Correct |
9 ms |
18996 KB |
Output is correct |
24 |
Correct |
11 ms |
18776 KB |
Output is correct |
25 |
Correct |
12 ms |
18776 KB |
Output is correct |
26 |
Correct |
9 ms |
18780 KB |
Output is correct |
27 |
Correct |
6 ms |
19032 KB |
Output is correct |
28 |
Correct |
4 ms |
18780 KB |
Output is correct |
29 |
Correct |
3 ms |
18952 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
18780 KB |
Output is correct |
2 |
Correct |
3 ms |
18780 KB |
Output is correct |
3 |
Correct |
3 ms |
19028 KB |
Output is correct |
4 |
Correct |
8 ms |
18780 KB |
Output is correct |
5 |
Correct |
5 ms |
18784 KB |
Output is correct |
6 |
Correct |
6 ms |
18936 KB |
Output is correct |
7 |
Correct |
6 ms |
18780 KB |
Output is correct |
8 |
Correct |
6 ms |
18780 KB |
Output is correct |
9 |
Correct |
10 ms |
18780 KB |
Output is correct |
10 |
Correct |
8 ms |
18776 KB |
Output is correct |
11 |
Correct |
10 ms |
19032 KB |
Output is correct |
12 |
Correct |
4 ms |
18780 KB |
Output is correct |
13 |
Correct |
4 ms |
18780 KB |
Output is correct |
14 |
Correct |
3 ms |
18948 KB |
Output is correct |
15 |
Correct |
8 ms |
18992 KB |
Output is correct |
16 |
Correct |
7 ms |
18780 KB |
Output is correct |
17 |
Correct |
7 ms |
18776 KB |
Output is correct |
18 |
Correct |
7 ms |
18780 KB |
Output is correct |
19 |
Correct |
8 ms |
18780 KB |
Output is correct |
20 |
Correct |
8 ms |
18780 KB |
Output is correct |
21 |
Correct |
11 ms |
18780 KB |
Output is correct |
22 |
Correct |
10 ms |
19032 KB |
Output is correct |
23 |
Correct |
9 ms |
18996 KB |
Output is correct |
24 |
Correct |
11 ms |
18776 KB |
Output is correct |
25 |
Correct |
12 ms |
18776 KB |
Output is correct |
26 |
Correct |
9 ms |
18780 KB |
Output is correct |
27 |
Correct |
6 ms |
19032 KB |
Output is correct |
28 |
Correct |
4 ms |
18780 KB |
Output is correct |
29 |
Correct |
3 ms |
18952 KB |
Output is correct |
30 |
Correct |
141 ms |
19128 KB |
Output is correct |
31 |
Correct |
185 ms |
19140 KB |
Output is correct |
32 |
Correct |
309 ms |
19208 KB |
Output is correct |
33 |
Correct |
305 ms |
19204 KB |
Output is correct |
34 |
Correct |
328 ms |
19204 KB |
Output is correct |
35 |
Correct |
8 ms |
19036 KB |
Output is correct |
36 |
Correct |
11 ms |
19036 KB |
Output is correct |
37 |
Correct |
10 ms |
19036 KB |
Output is correct |
38 |
Correct |
192 ms |
19252 KB |
Output is correct |
39 |
Correct |
192 ms |
19256 KB |
Output is correct |
40 |
Correct |
198 ms |
19036 KB |
Output is correct |
41 |
Correct |
7 ms |
19292 KB |
Output is correct |
42 |
Correct |
7 ms |
19292 KB |
Output is correct |
43 |
Correct |
10 ms |
19036 KB |
Output is correct |
44 |
Correct |
182 ms |
19192 KB |
Output is correct |
45 |
Correct |
223 ms |
19212 KB |
Output is correct |
46 |
Correct |
203 ms |
19224 KB |
Output is correct |
47 |
Correct |
8 ms |
19036 KB |
Output is correct |
48 |
Correct |
8 ms |
19036 KB |
Output is correct |
49 |
Correct |
10 ms |
19036 KB |
Output is correct |
50 |
Correct |
316 ms |
19220 KB |
Output is correct |
51 |
Correct |
284 ms |
19208 KB |
Output is correct |
52 |
Correct |
349 ms |
19212 KB |
Output is correct |
53 |
Correct |
369 ms |
19032 KB |
Output is correct |
54 |
Correct |
397 ms |
19204 KB |
Output is correct |
55 |
Correct |
343 ms |
19292 KB |
Output is correct |
56 |
Correct |
95 ms |
19064 KB |
Output is correct |
57 |
Correct |
5 ms |
19296 KB |
Output is correct |
58 |
Correct |
8 ms |
19032 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
18780 KB |
Output is correct |
2 |
Correct |
6 ms |
18780 KB |
Output is correct |
3 |
Correct |
108 ms |
19064 KB |
Output is correct |
4 |
Execution timed out |
5032 ms |
30720 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
18776 KB |
Output is correct |
2 |
Correct |
176 ms |
23048 KB |
Output is correct |
3 |
Correct |
279 ms |
23388 KB |
Output is correct |
4 |
Correct |
287 ms |
23832 KB |
Output is correct |
5 |
Correct |
171 ms |
31828 KB |
Output is correct |
6 |
Correct |
311 ms |
29624 KB |
Output is correct |
7 |
Correct |
313 ms |
26908 KB |
Output is correct |
8 |
Correct |
375 ms |
26076 KB |
Output is correct |
9 |
Correct |
591 ms |
25956 KB |
Output is correct |
10 |
Correct |
485 ms |
25676 KB |
Output is correct |
11 |
Correct |
409 ms |
25856 KB |
Output is correct |
12 |
Correct |
422 ms |
25788 KB |
Output is correct |
13 |
Correct |
419 ms |
25832 KB |
Output is correct |
14 |
Correct |
403 ms |
25836 KB |
Output is correct |
15 |
Correct |
454 ms |
26300 KB |
Output is correct |
16 |
Correct |
423 ms |
28444 KB |
Output is correct |
17 |
Correct |
439 ms |
28472 KB |
Output is correct |
18 |
Correct |
422 ms |
28472 KB |
Output is correct |
19 |
Correct |
93 ms |
31316 KB |
Output is correct |
20 |
Correct |
153 ms |
31404 KB |
Output is correct |
21 |
Correct |
144 ms |
27472 KB |
Output is correct |
22 |
Correct |
148 ms |
26196 KB |
Output is correct |
23 |
Correct |
126 ms |
25680 KB |
Output is correct |
24 |
Correct |
214 ms |
25680 KB |
Output is correct |
25 |
Correct |
230 ms |
25428 KB |
Output is correct |
26 |
Correct |
329 ms |
25384 KB |
Output is correct |
27 |
Correct |
311 ms |
25360 KB |
Output is correct |
28 |
Correct |
379 ms |
25324 KB |
Output is correct |
29 |
Correct |
454 ms |
25340 KB |
Output is correct |
30 |
Correct |
370 ms |
25348 KB |
Output is correct |
31 |
Correct |
379 ms |
25328 KB |
Output is correct |
32 |
Correct |
360 ms |
25328 KB |
Output is correct |
33 |
Correct |
269 ms |
25472 KB |
Output is correct |
34 |
Correct |
337 ms |
25832 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
18780 KB |
Output is correct |
2 |
Correct |
5 ms |
18780 KB |
Output is correct |
3 |
Correct |
99 ms |
19064 KB |
Output is correct |
4 |
Execution timed out |
5024 ms |
29040 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
18780 KB |
Output is correct |
2 |
Correct |
3 ms |
18780 KB |
Output is correct |
3 |
Correct |
3 ms |
19028 KB |
Output is correct |
4 |
Correct |
8 ms |
18780 KB |
Output is correct |
5 |
Correct |
5 ms |
18784 KB |
Output is correct |
6 |
Correct |
6 ms |
18936 KB |
Output is correct |
7 |
Correct |
6 ms |
18780 KB |
Output is correct |
8 |
Correct |
6 ms |
18780 KB |
Output is correct |
9 |
Correct |
10 ms |
18780 KB |
Output is correct |
10 |
Correct |
8 ms |
18776 KB |
Output is correct |
11 |
Correct |
10 ms |
19032 KB |
Output is correct |
12 |
Correct |
4 ms |
18780 KB |
Output is correct |
13 |
Correct |
4 ms |
18780 KB |
Output is correct |
14 |
Correct |
3 ms |
18948 KB |
Output is correct |
15 |
Correct |
8 ms |
18992 KB |
Output is correct |
16 |
Correct |
7 ms |
18780 KB |
Output is correct |
17 |
Correct |
7 ms |
18776 KB |
Output is correct |
18 |
Correct |
7 ms |
18780 KB |
Output is correct |
19 |
Correct |
8 ms |
18780 KB |
Output is correct |
20 |
Correct |
8 ms |
18780 KB |
Output is correct |
21 |
Correct |
11 ms |
18780 KB |
Output is correct |
22 |
Correct |
10 ms |
19032 KB |
Output is correct |
23 |
Correct |
9 ms |
18996 KB |
Output is correct |
24 |
Correct |
11 ms |
18776 KB |
Output is correct |
25 |
Correct |
12 ms |
18776 KB |
Output is correct |
26 |
Correct |
9 ms |
18780 KB |
Output is correct |
27 |
Correct |
6 ms |
19032 KB |
Output is correct |
28 |
Correct |
4 ms |
18780 KB |
Output is correct |
29 |
Correct |
3 ms |
18952 KB |
Output is correct |
30 |
Correct |
141 ms |
19128 KB |
Output is correct |
31 |
Correct |
185 ms |
19140 KB |
Output is correct |
32 |
Correct |
309 ms |
19208 KB |
Output is correct |
33 |
Correct |
305 ms |
19204 KB |
Output is correct |
34 |
Correct |
328 ms |
19204 KB |
Output is correct |
35 |
Correct |
8 ms |
19036 KB |
Output is correct |
36 |
Correct |
11 ms |
19036 KB |
Output is correct |
37 |
Correct |
10 ms |
19036 KB |
Output is correct |
38 |
Correct |
192 ms |
19252 KB |
Output is correct |
39 |
Correct |
192 ms |
19256 KB |
Output is correct |
40 |
Correct |
198 ms |
19036 KB |
Output is correct |
41 |
Correct |
7 ms |
19292 KB |
Output is correct |
42 |
Correct |
7 ms |
19292 KB |
Output is correct |
43 |
Correct |
10 ms |
19036 KB |
Output is correct |
44 |
Correct |
182 ms |
19192 KB |
Output is correct |
45 |
Correct |
223 ms |
19212 KB |
Output is correct |
46 |
Correct |
203 ms |
19224 KB |
Output is correct |
47 |
Correct |
8 ms |
19036 KB |
Output is correct |
48 |
Correct |
8 ms |
19036 KB |
Output is correct |
49 |
Correct |
10 ms |
19036 KB |
Output is correct |
50 |
Correct |
316 ms |
19220 KB |
Output is correct |
51 |
Correct |
284 ms |
19208 KB |
Output is correct |
52 |
Correct |
349 ms |
19212 KB |
Output is correct |
53 |
Correct |
369 ms |
19032 KB |
Output is correct |
54 |
Correct |
397 ms |
19204 KB |
Output is correct |
55 |
Correct |
343 ms |
19292 KB |
Output is correct |
56 |
Correct |
95 ms |
19064 KB |
Output is correct |
57 |
Correct |
5 ms |
19296 KB |
Output is correct |
58 |
Correct |
8 ms |
19032 KB |
Output is correct |
59 |
Correct |
2 ms |
18780 KB |
Output is correct |
60 |
Correct |
6 ms |
18780 KB |
Output is correct |
61 |
Correct |
108 ms |
19064 KB |
Output is correct |
62 |
Execution timed out |
5032 ms |
30720 KB |
Time limit exceeded |
63 |
Halted |
0 ms |
0 KB |
- |