#define taskname "test"
#include <bits/stdc++.h>
using namespace std;
#define sz(x) (int)x.size()
#define fi first
#define se second
typedef long long lli;
typedef pair<int, int> pii;
const int maxn = 2e5 + 5;
const int logn = 18;
int n, m, Q;
pii edges[maxn];
vector<int> gr[maxn];
int ntime = 0;
int tin[maxn], tout[maxn];
int depth[maxn], p[maxn][logn];
int state[maxn];
int total[maxn], lst[maxn];
struct fenwick
{
int val[maxn];
void update(int x, int k)
{
for(; x < maxn; x += x & -x)
val[x] += k;
}
void update(int l, int r, int k)
{
update(l, k);
update(r + 1, -k);
}
int get(int x)
{
int res = 0;
for(; x > 0; x -= x & -x)
res += val[x];
return res;
}
} tree;
void read_input()
{
cin >> n >> m >> Q;
for(int i = 1; i < n; ++i)
{
int u, v;
cin >> u >> v;
edges[i] = pii(u, v);
gr[u].push_back(v);
gr[v].push_back(u);
}
}
void dfs(int u, int par)
{
tin[u] = ++ntime;
depth[u] = depth[par] + 1;
p[u][0] = par;
for(int k = 1; k < logn; ++k)
p[u][k] = p[p[u][k - 1]][k - 1];
for(auto&v: gr[u])
if(v != par) dfs(v, u);
tout[u] = ntime;
}
int find_root(int u)
{
for(int k = logn - 1; k >= 0; --k)
if(tree.get(tin[u]) - tree.get(tin[p[u][k]]) == depth[u] - depth[p[u][k]])
u = p[u][k];
return u;
}
void solve()
{
dfs(1, 0);
fill(total + 1, total + n + 1, 1);
fill(lst + 1, lst + n + 1, 0);
for(; m > 0; --m)
{
int id;
cin >> id;
int u = edges[id].fi, v = edges[id].se;
if(depth[u] > depth[v]) swap(u, v);
if(state[id])
{
total[v] = lst[v] = total[find_root(v)];
tree.update(tin[v], tout[v], -1);
}
else
{
total[find_root(u)] += total[v] - lst[v];
tree.update(tin[v], tout[v], 1);
}
state[id] ^= 1;
}
for(; Q > 0; --Q)
{
int u;
cin >> u;
cout << total[find_root(u)] << '\n';
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
read_input();
solve();
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5100 KB |
Output is correct |
2 |
Correct |
3 ms |
5100 KB |
Output is correct |
3 |
Correct |
3 ms |
5100 KB |
Output is correct |
4 |
Correct |
3 ms |
5100 KB |
Output is correct |
5 |
Correct |
4 ms |
5120 KB |
Output is correct |
6 |
Correct |
5 ms |
5228 KB |
Output is correct |
7 |
Correct |
18 ms |
6636 KB |
Output is correct |
8 |
Correct |
18 ms |
6656 KB |
Output is correct |
9 |
Correct |
18 ms |
6636 KB |
Output is correct |
10 |
Correct |
253 ms |
21320 KB |
Output is correct |
11 |
Correct |
275 ms |
21356 KB |
Output is correct |
12 |
Correct |
290 ms |
25836 KB |
Output is correct |
13 |
Correct |
146 ms |
21092 KB |
Output is correct |
14 |
Correct |
178 ms |
20716 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
117 ms |
23404 KB |
Output is correct |
2 |
Correct |
113 ms |
23404 KB |
Output is correct |
3 |
Correct |
123 ms |
25212 KB |
Output is correct |
4 |
Correct |
125 ms |
25324 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
5100 KB |
Output is correct |
2 |
Correct |
4 ms |
5100 KB |
Output is correct |
3 |
Correct |
4 ms |
5100 KB |
Output is correct |
4 |
Correct |
4 ms |
5100 KB |
Output is correct |
5 |
Correct |
4 ms |
5100 KB |
Output is correct |
6 |
Correct |
5 ms |
5356 KB |
Output is correct |
7 |
Correct |
28 ms |
7276 KB |
Output is correct |
8 |
Correct |
377 ms |
26604 KB |
Output is correct |
9 |
Correct |
349 ms |
26604 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
350 ms |
26732 KB |
Output is correct |
2 |
Correct |
203 ms |
26348 KB |
Output is correct |
3 |
Correct |
201 ms |
26476 KB |
Output is correct |
4 |
Correct |
196 ms |
26348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
5100 KB |
Output is correct |
2 |
Correct |
4 ms |
5120 KB |
Output is correct |
3 |
Correct |
3 ms |
5100 KB |
Output is correct |
4 |
Correct |
4 ms |
5100 KB |
Output is correct |
5 |
Correct |
6 ms |
5376 KB |
Output is correct |
6 |
Correct |
25 ms |
6764 KB |
Output is correct |
7 |
Correct |
310 ms |
22124 KB |
Output is correct |
8 |
Correct |
356 ms |
26604 KB |
Output is correct |
9 |
Correct |
178 ms |
22244 KB |
Output is correct |
10 |
Correct |
218 ms |
21996 KB |
Output is correct |
11 |
Correct |
159 ms |
24556 KB |
Output is correct |
12 |
Correct |
165 ms |
24612 KB |
Output is correct |
13 |
Correct |
196 ms |
26476 KB |
Output is correct |