2019.3.1学习笔记
#include<algorithm> #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn = 50005; typedef long long ll; int fa[maxn]; int find(int x) { return x == fa[x] ? fa[x] : fa[x] = find(fa[x]);//寻找x的爸爸 } void baba(int x, int y)//把x,y变成一个爸爸 { int fx = find(x), fy = find(y); fa[fx] = fy; } int main() { int n, m; int l = 0; while (~scanf("%d%d", &n, &m)) { l++; int p = 0; int z[maxn] = { 0 }; if (n == 0 && m == 0) break; for (int i = 1; i <= n; i++)//初始化 { fa[i] = i; } for (int j = 1; j <= m; j++) { int a, b; scanf("%d %d", &a, &b); baba(a, b); } for (int k = 1; k <= n; k++)//遍历爸爸 { if (z[find(k)] == 0) { p++; z[find(k)] = 1; } } printf("Case %d: %d ", l, p); } return 0; }