UnionFind.cc 298 B

12345
  1. // union-find set: the array contains the parent of each node
  2. // path compression but no balancing
  3. int make(int *C, int n) { for(int i = 0; i < n; i++) C[i]=i; }
  4. int find(int *C, int x) { return (C[x]==x) ? x : C[x]=find(C, C[x]); }
  5. void unite(int *C, int x, int y) { C[find(C, x)] = find(C, y); }