求指点
#include<iostream>
#include<map>
using namespace std;
map<int, int> a;
int find(int x)
{
if (a[x] = x)return x;
return a[x] = find(a[x]);
}
int main()
{
int n, m;
while (cin >> n)
{
int b[1000] = { 0 };
int e = 0;
int f = 0;
if (n == 0)break;
cin >> m;
for (int i = 1; i <= n; i++)a[i] = i;
int c, d;
for (int i = 0; i < m; i++)
{
cin >> c >> d;
a[find(c)] = find(d);
}
for (int i = 1; i <= n; i++)
{
bool pd = true;
for (int j = 1; j <= e; j++)
{
if (a[i] == b[j])pd = false;
}
if (pd)
{
e++;
f++;
b[e] = a[i];
}
}
cout << f - 1 << endl;
}
return 0;
}