#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string>
#include <string.h>
#include <vector>
#include <queue>
#include <stack>
#include <sstream>
using namespace std;
//1012
int n,m;
int Tree[1000];
int findRoot(int x){
if(Tree[x]==x) return x;
else{
int tmp=findRoot(Tree[x]);
Tree[x]=tmp;
return tmp;
}
}
int main(){
// freopen("input.txt","r",stdin);
while(cin>>n>>m && n!=0){
for(int i=1;i<=n;i++) //初始化
Tree[i]=i;
while(m--){
int a,b;
cin>>a>>b;
a=findRoot(a);
b=findRoot(b);
if(a!=b)
Tree[a]=b;
}
int cnt=0;
for(int i=1;i<=n;i++){
if(Tree[i]==i)
cnt++;
}
cout<<cnt-1<<endl;
}
return 0;
}
/**************************************************************
Problem: 1012
User: cust123
Language: C++
Result: Accepted
Time:10 ms
Memory:1524 kb
****************************************************************/
题目1012:畅通工程
最新推荐文章于 2020-03-14 17:09:19 发布