public void Line() { int n = 500000; var uf = new DSU(n); for (int i = 0; i < n - 1; i++) { uf.Merge(i, i + 1); } uf.Size(0).Should().Be(n); uf.Groups().Should().HaveCount(1); }
public void LineReverse() { int n = 500000; var uf = new DSU(n); for (int i = n - 2; i >= 0; i--) { uf.Merge(i, i + 1); } uf.Size(0).Should().Be(n); uf.Groups().Should().HaveCount(1); }
public void Zero() { var uf = new DSU(0); uf.Groups().Should().Equal(Array.Empty <int[]>()); }