Pagini recente » Arhiva de probleme | Cod sursa (job #1531941) | Cod sursa (job #2214554) | Cod sursa (job #330814) | Cod sursa (job #168424)
Cod sursa(job #168424)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int N, M;
vector<int> G[100004];
bool viz[100004];
void inline walk(int u) {
viz[u] = true;
for (vector<int>::iterator v = G[u].begin();
v != G[u].end();
++v)
if (!viz[*v])
walk(*v);
}
int main(int argc, char *argv[]) {
FILE *fi = fopen("dfs.in", "r");
fscanf(fi, "%d %d", &N, &M);
int u, v;
for (int i(0); i < M; ++i) {
fscanf(fi, "%d %d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
fclose(fi);
int cc(0);
for (int i(1); i <= N; ++i)
if (!viz[i]) {
++cc;
walk(i);
}
ofstream fout("dfs.out");
fout << cc << endl;
fout.close();
return 0;
}