基本模板:
class UF
{
public:
void UF(
int n)
{
id.reset(n);
for(
int i=
0; i < n; i++)
{
id[i] = i;
}
};
boolean connect(
int i,
int j)
{
return root(i) == root(j);
}
void unionSet(
int p,
int q)
{
int i = root(p);
int j = root(q);
id[i] = j;
}
private:
int root(
int i)
{
while(i != id[i])
{
id[i] = id[id[i]];
i = id[i];
}
return i;
}
private:
vector<int> id;
};