#include <iostream>
using namespace std;
/*
纯粹的模板题
*/
int n, m;
int students[500002];
void init() {
for (int i = 1; i <= n; i++) {
students[i] = i;
}
}
int find_set(int x) {
if (x == students[x])
return x;
else {
students[x] = find_set(students[x]);
}
}
void union_set(int x, int y) {
x = find_set(x);
y = find_set(y);
students[x] = y;
}
int sum() {
int res = 0;
for (int i = 1; i <= n; i++) {
if (students[i] == i)
res++;
}
return res;
}
int num = 1;
int main() {
while (cin >> n >> m) {
if (n == 0 && m == 0) break;
init();
while (m--) {
int s1;
int s2;
cin >> s1 >> s2;
union_set(s1, s2);
}
cout << "Case "<<num<<": "<< sum() << endl;
num++;
}
return 0;
}
POJ-2524
最新推荐文章于 2024-09-13 15:56:13 发布