Pagini recente » Cod sursa (job #1108714) | Cod sursa (job #97684) | Cod sursa (job #123482) | Cod sursa (job #1865077) | Cod sursa (job #2855140)
#include <stdio.h>
#include <vector>
#include <queue>
using namespace std;
#define MAX_N 100005
vector<int> graph[MAX_N];
bool conex[MAX_N];
void addEdge(int a, int b) {
graph[a].push_back(b);
graph[b].push_back(a);
}
void dfs(int node) {
conex[node] = 1;
for(int neighbour : graph[node]){
if(!conex[neighbour]){
dfs(neighbour);
}
}
}
int main() {
FILE *fin, *fout;
fin = fopen("dfs.in", "r");
fout = fopen("dfs.out", "w");
int n, m, i, a, b, c;
fscanf(fin, "%d%d", &n, &m);
for (i = 0; i < m; ++i) {
fscanf(fin, "%d%d", &a, &b);
addEdge(a, b);
}
c=0;
for (i = 1; i <= n; ++i){
if(conex[i] == 0){
dfs(i);
c++;
}
}
fprintf(fout, "%d", c);
fclose(fin);
fclose(fout);
return 0;
}