CSharp 实现并查集 源代码
时间: 2023-10-17 11:11:43 浏览: 38
很高兴为您解答问题!以下是 CSharp 实现并查集的源代码:
```
public class UnionFindSet
{
private int[] parents;
private int[] ranks;
public UnionFindSet(int size)
{
parents = new int[size];
ranks = new int[size];
for (int i = 0; i < size; i++)
{
parents[i] = i;
ranks[i] = 1;
}
}
public int Find(int i)
{
if (parents[i] == i)
{
return i;
}
return parents[i] = Find(parents[i]);
}
public bool Union(int i, int j)
{
int rootI = Find(i);
int rootJ = Find(j);
if (rootI == rootJ)
{
return false;
}
if (ranks[rootI] < ranks[rootJ])
{
parents[rootI] = rootJ;
}
else if (ranks[rootI] > ranks[rootJ])
{
parents[rootJ] = rootI;
}
else
{
parents[rootJ] = rootI;
ranks[rootI]++;
}
return true;
}
}
```
希望对您有所帮助!如果您还有其他问题,请随时问我。