diff --git a/problem/P1536/P1536.cpp b/problem/P1536/P1536.cpp new file mode 100644 index 00000000..83c9bd84 --- /dev/null +++ b/problem/P1536/P1536.cpp @@ -0,0 +1,33 @@ +#include + +using namespace std; + +int n, m, x, y, ans, f[100005]; + +int find(int x) { + if (f[x] == x) return x; + return f[x] = find(f[x]); +} + +void unity(int x, int y) { + f[find(x)] = find(y); +} + +int main() { + while (cin >> n, n) { + ans = 0; + cin >> m; + for (int i = 1; i <= n; i++) { + f[i] = i; + } + for (int i = 1; i <= m; i++) { + cin >> x >> y; + unity(x, y); + } + for (int i = 1; i <= n; i++) { + if (find(i) == i) ans++; + } + cout << --ans << endl; + } + return 0; +}