Pagini recente » Cod sursa (job #1773038) | Cod sursa (job #529980) | Cod sursa (job #2292551) | Cod sursa (job #137034) | Cod sursa (job #2501978)
#include <fstream>
using namespace std;
const int N = 100001;
const int M = 2*N;
int lst[N], vf[2*M], urm[2*M], n, nr;
bool viz[N], nv;
void adauga (int x, int y) {
vf[++nr] = y;
urm[nr] = lst[x];
lst[x] = nr;
}
void dfs ( int x ) {
viz[x] = true;
for ( int p = lst[x]; p != 0; p = urm[p] ) {
int y = vf[p];
if ( !viz[y] )
dfs(y);
}
}
int main () {
ifstream fin ("dfs.in");
ofstream fout ("dfs.out");
int m, gcon = 0, x, y;
fin>>n>>m;
for ( int i = 0; i < m; i++ ) {
fin>>x>>y;
adauga(x, y);
adauga(y, x);
}
for ( int i = 1; i <= n; i++ ) {
if ( !viz[i] ) {
gcon++;
dfs(i);
}
}
fout<<gcon;
return 0;
}