畅通工程
HDU - 1232
模板题
问至少还有多少条边才能形成一个连通图。
连通图:n个点,n-1条边
我的代码
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
int f[maxn];
int n, m, a, b, cnt;
int Find(int x){
if(x == f[x]) return x;
else return f[x] = Find(f[x]);
}
int Union(int a, int b){
int fa = Find(a);
int fb = Find(b);
if(fa != fb){
f[fa] = fb;
return 1;
}
return 0;
}
int main(){
while(cin >> n >> m){
for(int i = 1; i <= n; i++)
f[i] = i;
cnt = 0;
for(int i = 1; i <= m; i++){
cin >> a >> b;
if(Union(a, b)){
cnt++;
}
}
cout << n-1 - cnt << endl;
}
}