Pagini recente » Cod sursa (job #1806684) | Cod sursa (job #2080524) | Cod sursa (job #3000068) | Cod sursa (job #1464643) | Cod sursa (job #168422)
Cod sursa(job #168422)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int N, M;
bool viz[100004];
typedef struct nod_t {
int n;
nod_t *next;
} nod_t;
nod_t *G[100005];
void add(int u, int v) {
nod_t *n = new nod_t;
n->n = v;
n->next = G[u];
G[u] = n;
}
void inline walk(int u) {
viz[u] = true;
for (nod_t *v = G[u]; v; v = v->next)
if (!viz[v->n])
walk(v->n);
}
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);
add(u, v);
add(v, 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;
}