Pagini recente » Cod sursa (job #2678197) | Cod sursa (job #875538) | Cod sursa (job #1837811) | Cod sursa (job #1710904) | Cod sursa (job #2907427)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
ifstream f("dfs.in");
ofstream g("dfs.out");
#define MAX 100001
int N,M,x,y,i,count=0;
vector <int> A[MAX];
int viz[MAX];
void citire()
{
f >> N >> M;
for (i = 1; i <= M; i++)
{
f >> x >> y;
A[x].push_back(y);
A[y].push_back(x);
}
}
void DFS(int nod)
{
viz[nod] = 1;
for (auto j: A[nod]) {
// parcurg fiecare vecin al nodului curent
// daca nu este vizitat deja, apelez DFS
if (!viz[j])
DFS(j);
}
}
int main()
{
// folosesc liste de vecini pentru retinerea grafului
citire();
// marchez toate nodurile ca fiind nevizitate
memset(viz, 0, sizeof(viz));
for (i=1; i<=N; i++)
if (!viz[i]) {
count++;
DFS(i);
}
g<<count;
f.close();
g.close();
return 0;
}