Pagini recente » Cod sursa (job #2138603) | Cod sursa (job #1809442) | Cod sursa (job #2749855) | Cod sursa (job #2937391) | Cod sursa (job #1365509)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("dfs.in");
ofstream fout("dfs.out");
const int maxn = 100005;
int n, m, father[maxn];
inline int _find(int x) {
if(father[x] != x)
father[x] = _find(father[x]);
return father[x];
}
inline bool unite(int x, int y) {
x = _find(x);
y = _find(y);
if(x == y)
return false;
father[x] = y;
return true;
}
int main() {
fin >> n >> m;
for(int i = 0 ; i < n ; ++ i)
father[i] = i;
for(int i = 1 ; i <= m ; ++ i) {
int x, y;
fin >> x >> y;
-- x; -- y;
if(unite(x, y))
-- n;
}
fout << n << '\n';
}