#include <stdio.h> #include <string.h> int father[1000]; int height[1000]; // Add proper parameter types in function declarations void intial(int n) { for(int i = 0; i < n; i++) { father[i] = i; height[i] = 0; } } int Find(int n) { if(n != father[n]) { father[n] = Find(father[n]); } return father[n]; } void Uion(int a, int b) { a = Find(a); b = Find(b); if (a != b) { if (height[a] > height[b]) { father[b] = a; // Fix assignment } else if (height[a] < height[b]) { father[a] = b; // Fix assignment } else { father[a] = b; height[b]++; } } } int main() { int a, b, c, d; while(scanf("%d %d", &a, &b) != EOF) { if (a == 0){ break; } int ans = -1; intial(a); for(int i = 0; i < b; i++) { scanf("%d %d", &c, &d); Uion(c, d); } for(int i = 0; i < a; i++) { // Change b to a if(i == father[i]) ans++; } printf("%d\n", ans); // Add output statement } return 0; }