Pagini recente » Cod sursa (job #3225039) | Cod sursa (job #2827278) | Cod sursa (job #2410929) | Cod sursa (job #1460561) | Cod sursa (job #1266696)
#include <stdio.h>
#include <vector>
using namespace std;
void dfs (long node, const vector<vector<long> >& ad, vector<bool>& visited)
{
visited[node] = true;
int size = ad[node].size();
for (int i = 0; i < size; i++) {
if (!visited[ad[node][i]]) {
dfs(ad[node][i], ad, visited);
}
}
}
int main()
{
freopen("dfs.in", "r", stdin);
freopen("dfs.out", "w", stdout);
long n, node1, node2;
long long m;
scanf("%ld %lld", &n, &m);
vector<vector<long> > ad(n + 1, vector<long>());
vector<bool> visited(n + 1, false);
for (long long i = 0; i < m; i++) {
scanf("%ld %ld", &node1, &node2);
ad[node1].push_back(node2);
ad[node2].push_back(node1);
}
int count = 0;
for (int i = 1; i <= n; i++) {
if (!visited[i]) {
dfs(i, ad, visited);
count++;
}
}
printf("%d\n", count);
return 0;
}