If we define spar[v]=the number of nodes that node v is their parent in DSU how can we calculate it?
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
If we define spar[v]=the number of nodes that node v is their parent in DSU how can we calculate it?
Name |
---|
did you mean the parent-most node is v or v could be an intermediate parent ?
The parent-most node if v
for all nodes (other than v) you check recursively if the parent of this node is v and increase the counter by 1
That depends on the rest of your implementation. Usually for best performance you need size anyway to join smaller set to the bigger one, so size of the set is part of DSU internal data.
my DSU implementation. In order to get the size of the component which contains v you call
dsu.size[dsu.update(v)]
I need only one array to store both parent and size of sets. This is my DSU implementation.