| 20 | } |
| 21 | |
| 22 | unsigned UnionFind::find(unsigned i) { |
| 23 | unsigned root = i; |
| 24 | while (root != id[root]) |
| 25 | root = id[root]; |
| 26 | id[i] = root; |
| 27 | return root; |
| 28 | } |
| 29 | |
| 30 | unsigned UnionFind::merge(unsigned p, unsigned q) { |
| 31 | unsigned i = find(p); |
no outgoing calls