Link
I tried solving this using the ordered_set gnu pbds
I did dfs along with using swap and move methods for merging the sets of each node's children. The time complexity should be nlogn but why is it giving TLE on test 15?
dfs function
# | User | Rating |
---|---|---|
1 | tourist | 3985 |
2 | jiangly | 3814 |
3 | jqdai0815 | 3682 |
4 | Benq | 3529 |
5 | orzdevinwang | 3526 |
6 | ksun48 | 3517 |
7 | Radewoosh | 3410 |
8 | hos.lyric | 3399 |
9 | ecnerwala | 3392 |
9 | Um_nik | 3392 |
# | User | Contrib. |
---|---|---|
1 | cry | 170 |
2 | maomao90 | 162 |
2 | Um_nik | 162 |
4 | atcoder_official | 160 |
5 | djm03178 | 158 |
5 | -is-this-fft- | 158 |
7 | adamant | 154 |
7 | Dominater069 | 154 |
9 | awoo | 153 |
10 | luogu_official | 152 |
Link
I tried solving this using the ordered_set gnu pbds
I did dfs along with using swap and move methods for merging the sets of each node's children. The time complexity should be nlogn but why is it giving TLE on test 15?
ordered_set dfs(int p, int e) {
d[p] = w[p] + d[e];
ordered_set ret;
for (auto u : adj[p]) {
if (u != e) {
auto x = dfs(u, p);
if (x.size() > ret.size()) {
swap(x, ret);
}
for (auto u : x) {
ret.insert(u);
}
}
}
//compute the answer for nope p
ans[p] = ret.order_of_key({d[p], INF});
ret.insert({d[p] - a[p], p});
return move(ret);
}
Name |
---|
Don't act like you really know how
move
works like, it's much more difficult than one can imagine. Read this.Okay move function doesn't work here but is there any way to make this approach work?
Just don't call
move
explicitly, usereturn ret;
.x.swap(ret)
. I also believe that ordered_set is not the intended solution anyway.and
move
is useless hereThanks, this worked!