#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 = 300;
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);
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 |
3 ms |
18780 KB |
Output is correct |
2 |
Correct |
2 ms |
18776 KB |
Output is correct |
3 |
Correct |
3 ms |
18780 KB |
Output is correct |
4 |
Correct |
6 ms |
18780 KB |
Output is correct |
5 |
Correct |
5 ms |
18936 KB |
Output is correct |
6 |
Correct |
6 ms |
18776 KB |
Output is correct |
7 |
Correct |
6 ms |
18776 KB |
Output is correct |
8 |
Correct |
5 ms |
18776 KB |
Output is correct |
9 |
Correct |
8 ms |
19008 KB |
Output is correct |
10 |
Correct |
8 ms |
18780 KB |
Output is correct |
11 |
Correct |
8 ms |
18776 KB |
Output is correct |
12 |
Correct |
3 ms |
18780 KB |
Output is correct |
13 |
Correct |
3 ms |
18780 KB |
Output is correct |
14 |
Correct |
3 ms |
19188 KB |
Output is correct |
15 |
Correct |
7 ms |
18780 KB |
Output is correct |
16 |
Correct |
6 ms |
18780 KB |
Output is correct |
17 |
Correct |
7 ms |
18780 KB |
Output is correct |
18 |
Correct |
6 ms |
18780 KB |
Output is correct |
19 |
Correct |
8 ms |
18780 KB |
Output is correct |
20 |
Correct |
6 ms |
18780 KB |
Output is correct |
21 |
Correct |
8 ms |
18780 KB |
Output is correct |
22 |
Correct |
9 ms |
18908 KB |
Output is correct |
23 |
Correct |
8 ms |
18776 KB |
Output is correct |
24 |
Correct |
8 ms |
18776 KB |
Output is correct |
25 |
Correct |
9 ms |
18824 KB |
Output is correct |
26 |
Correct |
8 ms |
18780 KB |
Output is correct |
27 |
Correct |
5 ms |
18780 KB |
Output is correct |
28 |
Correct |
3 ms |
18780 KB |
Output is correct |
29 |
Correct |
4 ms |
18956 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
18780 KB |
Output is correct |
2 |
Correct |
2 ms |
18776 KB |
Output is correct |
3 |
Correct |
3 ms |
18780 KB |
Output is correct |
4 |
Correct |
6 ms |
18780 KB |
Output is correct |
5 |
Correct |
5 ms |
18936 KB |
Output is correct |
6 |
Correct |
6 ms |
18776 KB |
Output is correct |
7 |
Correct |
6 ms |
18776 KB |
Output is correct |
8 |
Correct |
5 ms |
18776 KB |
Output is correct |
9 |
Correct |
8 ms |
19008 KB |
Output is correct |
10 |
Correct |
8 ms |
18780 KB |
Output is correct |
11 |
Correct |
8 ms |
18776 KB |
Output is correct |
12 |
Correct |
3 ms |
18780 KB |
Output is correct |
13 |
Correct |
3 ms |
18780 KB |
Output is correct |
14 |
Correct |
3 ms |
19188 KB |
Output is correct |
15 |
Correct |
7 ms |
18780 KB |
Output is correct |
16 |
Correct |
6 ms |
18780 KB |
Output is correct |
17 |
Correct |
7 ms |
18780 KB |
Output is correct |
18 |
Correct |
6 ms |
18780 KB |
Output is correct |
19 |
Correct |
8 ms |
18780 KB |
Output is correct |
20 |
Correct |
6 ms |
18780 KB |
Output is correct |
21 |
Correct |
8 ms |
18780 KB |
Output is correct |
22 |
Correct |
9 ms |
18908 KB |
Output is correct |
23 |
Correct |
8 ms |
18776 KB |
Output is correct |
24 |
Correct |
8 ms |
18776 KB |
Output is correct |
25 |
Correct |
9 ms |
18824 KB |
Output is correct |
26 |
Correct |
8 ms |
18780 KB |
Output is correct |
27 |
Correct |
5 ms |
18780 KB |
Output is correct |
28 |
Correct |
3 ms |
18780 KB |
Output is correct |
29 |
Correct |
4 ms |
18956 KB |
Output is correct |
30 |
Correct |
40 ms |
19032 KB |
Output is correct |
31 |
Correct |
47 ms |
19036 KB |
Output is correct |
32 |
Correct |
61 ms |
19244 KB |
Output is correct |
33 |
Correct |
68 ms |
19248 KB |
Output is correct |
34 |
Correct |
66 ms |
19032 KB |
Output is correct |
35 |
Correct |
8 ms |
19172 KB |
Output is correct |
36 |
Correct |
8 ms |
19036 KB |
Output is correct |
37 |
Correct |
9 ms |
19036 KB |
Output is correct |
38 |
Correct |
36 ms |
19292 KB |
Output is correct |
39 |
Correct |
38 ms |
19320 KB |
Output is correct |
40 |
Correct |
36 ms |
19292 KB |
Output is correct |
41 |
Correct |
7 ms |
19288 KB |
Output is correct |
42 |
Correct |
8 ms |
19288 KB |
Output is correct |
43 |
Correct |
7 ms |
19292 KB |
Output is correct |
44 |
Correct |
39 ms |
19036 KB |
Output is correct |
45 |
Correct |
38 ms |
19252 KB |
Output is correct |
46 |
Correct |
47 ms |
19276 KB |
Output is correct |
47 |
Correct |
9 ms |
19288 KB |
Output is correct |
48 |
Correct |
7 ms |
19292 KB |
Output is correct |
49 |
Correct |
7 ms |
19292 KB |
Output is correct |
50 |
Correct |
60 ms |
19272 KB |
Output is correct |
51 |
Correct |
56 ms |
19036 KB |
Output is correct |
52 |
Correct |
60 ms |
19268 KB |
Output is correct |
53 |
Correct |
59 ms |
19036 KB |
Output is correct |
54 |
Correct |
60 ms |
19032 KB |
Output is correct |
55 |
Correct |
58 ms |
19032 KB |
Output is correct |
56 |
Correct |
25 ms |
19032 KB |
Output is correct |
57 |
Correct |
4 ms |
19036 KB |
Output is correct |
58 |
Correct |
6 ms |
19036 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 |
32 ms |
19032 KB |
Output is correct |
4 |
Execution timed out |
5052 ms |
32864 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
18780 KB |
Output is correct |
2 |
Correct |
125 ms |
22796 KB |
Output is correct |
3 |
Correct |
202 ms |
24660 KB |
Output is correct |
4 |
Correct |
154 ms |
24840 KB |
Output is correct |
5 |
Correct |
139 ms |
33404 KB |
Output is correct |
6 |
Correct |
266 ms |
31572 KB |
Output is correct |
7 |
Correct |
218 ms |
28500 KB |
Output is correct |
8 |
Correct |
199 ms |
27744 KB |
Output is correct |
9 |
Correct |
217 ms |
27984 KB |
Output is correct |
10 |
Correct |
210 ms |
27220 KB |
Output is correct |
11 |
Correct |
254 ms |
27432 KB |
Output is correct |
12 |
Correct |
293 ms |
27216 KB |
Output is correct |
13 |
Correct |
267 ms |
27512 KB |
Output is correct |
14 |
Correct |
271 ms |
27752 KB |
Output is correct |
15 |
Correct |
284 ms |
29028 KB |
Output is correct |
16 |
Correct |
256 ms |
30340 KB |
Output is correct |
17 |
Correct |
329 ms |
30284 KB |
Output is correct |
18 |
Correct |
254 ms |
30336 KB |
Output is correct |
19 |
Correct |
83 ms |
33108 KB |
Output is correct |
20 |
Correct |
113 ms |
33104 KB |
Output is correct |
21 |
Correct |
110 ms |
29368 KB |
Output is correct |
22 |
Correct |
117 ms |
28124 KB |
Output is correct |
23 |
Correct |
130 ms |
27340 KB |
Output is correct |
24 |
Correct |
128 ms |
27100 KB |
Output is correct |
25 |
Correct |
141 ms |
27216 KB |
Output is correct |
26 |
Correct |
225 ms |
26964 KB |
Output is correct |
27 |
Correct |
202 ms |
26948 KB |
Output is correct |
28 |
Correct |
312 ms |
26900 KB |
Output is correct |
29 |
Correct |
330 ms |
27172 KB |
Output is correct |
30 |
Correct |
315 ms |
26972 KB |
Output is correct |
31 |
Correct |
364 ms |
27056 KB |
Output is correct |
32 |
Correct |
269 ms |
27168 KB |
Output is correct |
33 |
Correct |
290 ms |
27440 KB |
Output is correct |
34 |
Correct |
313 ms |
28552 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 |
24 ms |
19036 KB |
Output is correct |
4 |
Execution timed out |
5010 ms |
31604 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
18780 KB |
Output is correct |
2 |
Correct |
2 ms |
18776 KB |
Output is correct |
3 |
Correct |
3 ms |
18780 KB |
Output is correct |
4 |
Correct |
6 ms |
18780 KB |
Output is correct |
5 |
Correct |
5 ms |
18936 KB |
Output is correct |
6 |
Correct |
6 ms |
18776 KB |
Output is correct |
7 |
Correct |
6 ms |
18776 KB |
Output is correct |
8 |
Correct |
5 ms |
18776 KB |
Output is correct |
9 |
Correct |
8 ms |
19008 KB |
Output is correct |
10 |
Correct |
8 ms |
18780 KB |
Output is correct |
11 |
Correct |
8 ms |
18776 KB |
Output is correct |
12 |
Correct |
3 ms |
18780 KB |
Output is correct |
13 |
Correct |
3 ms |
18780 KB |
Output is correct |
14 |
Correct |
3 ms |
19188 KB |
Output is correct |
15 |
Correct |
7 ms |
18780 KB |
Output is correct |
16 |
Correct |
6 ms |
18780 KB |
Output is correct |
17 |
Correct |
7 ms |
18780 KB |
Output is correct |
18 |
Correct |
6 ms |
18780 KB |
Output is correct |
19 |
Correct |
8 ms |
18780 KB |
Output is correct |
20 |
Correct |
6 ms |
18780 KB |
Output is correct |
21 |
Correct |
8 ms |
18780 KB |
Output is correct |
22 |
Correct |
9 ms |
18908 KB |
Output is correct |
23 |
Correct |
8 ms |
18776 KB |
Output is correct |
24 |
Correct |
8 ms |
18776 KB |
Output is correct |
25 |
Correct |
9 ms |
18824 KB |
Output is correct |
26 |
Correct |
8 ms |
18780 KB |
Output is correct |
27 |
Correct |
5 ms |
18780 KB |
Output is correct |
28 |
Correct |
3 ms |
18780 KB |
Output is correct |
29 |
Correct |
4 ms |
18956 KB |
Output is correct |
30 |
Correct |
40 ms |
19032 KB |
Output is correct |
31 |
Correct |
47 ms |
19036 KB |
Output is correct |
32 |
Correct |
61 ms |
19244 KB |
Output is correct |
33 |
Correct |
68 ms |
19248 KB |
Output is correct |
34 |
Correct |
66 ms |
19032 KB |
Output is correct |
35 |
Correct |
8 ms |
19172 KB |
Output is correct |
36 |
Correct |
8 ms |
19036 KB |
Output is correct |
37 |
Correct |
9 ms |
19036 KB |
Output is correct |
38 |
Correct |
36 ms |
19292 KB |
Output is correct |
39 |
Correct |
38 ms |
19320 KB |
Output is correct |
40 |
Correct |
36 ms |
19292 KB |
Output is correct |
41 |
Correct |
7 ms |
19288 KB |
Output is correct |
42 |
Correct |
8 ms |
19288 KB |
Output is correct |
43 |
Correct |
7 ms |
19292 KB |
Output is correct |
44 |
Correct |
39 ms |
19036 KB |
Output is correct |
45 |
Correct |
38 ms |
19252 KB |
Output is correct |
46 |
Correct |
47 ms |
19276 KB |
Output is correct |
47 |
Correct |
9 ms |
19288 KB |
Output is correct |
48 |
Correct |
7 ms |
19292 KB |
Output is correct |
49 |
Correct |
7 ms |
19292 KB |
Output is correct |
50 |
Correct |
60 ms |
19272 KB |
Output is correct |
51 |
Correct |
56 ms |
19036 KB |
Output is correct |
52 |
Correct |
60 ms |
19268 KB |
Output is correct |
53 |
Correct |
59 ms |
19036 KB |
Output is correct |
54 |
Correct |
60 ms |
19032 KB |
Output is correct |
55 |
Correct |
58 ms |
19032 KB |
Output is correct |
56 |
Correct |
25 ms |
19032 KB |
Output is correct |
57 |
Correct |
4 ms |
19036 KB |
Output is correct |
58 |
Correct |
6 ms |
19036 KB |
Output is correct |
59 |
Correct |
3 ms |
18780 KB |
Output is correct |
60 |
Correct |
5 ms |
18780 KB |
Output is correct |
61 |
Correct |
32 ms |
19032 KB |
Output is correct |
62 |
Execution timed out |
5052 ms |
32864 KB |
Time limit exceeded |
63 |
Halted |
0 ms |
0 KB |
- |