最简单的并查集
多做做水题,加深一下理解
//#define LOCAL
#include <cstdio> const int maxn = + ;
int parent[maxn]; int GetParent(int a) { return parent[a] == a ? a : parent[a] = GetParent(parent[a]); } int main(void)
{
#ifdef LOCAL
freopen("3644in.txt", "r", stdin);
#endif int x, y;
while(scanf("%d", &x) == )
{
for(int i = ; i < maxn; ++i) parent[i] = i;
int cnt = ;
while(~x)
{
scanf("%d", &y);
x = GetParent(x); y = GetParent(y);
if(x == y) ++cnt;
else parent[x] = y;
scanf("%d", &x);
}
printf("%d\n", cnt);
}
return ;
}
代码君