并查集
int go(int p)//从p点出发 看最后会走到哪里
{
if (p == to[p]) return p;
else return go(to[p]);
}
int main ()
{
cin >> n;
for (int i=1;i<=n;i++)
to[i] = i;
//合并
to[go(p1)] = go(p2);
//查询
go(p1) == go(p2);
}
int go(int p)//从p点出发 看最后会走到哪里
{
if (p == to[p]) return p;
else return go(to[p]);
}
int main ()
{
cin >> n;
for (int i=1;i<=n;i++)
to[i] = i;
//合并
to[go(p1)] = go(p2);
//查询
go(p1) == go(p2);
}