Pagini recente » Cod sursa (job #108462) | Cod sursa (job #1705384) | Cod sursa (job #1531405) | Cod sursa (job #3263752) | Cod sursa (job #214594)
Cod sursa(job #214594)
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#define MAXN 100010
long *G[MAXN], deg[MAXN], n, m, sol, sel[MAXN], Y2, Y1, i;
void read() {
long Y1 = 0, Y2 = 0;
scanf("%ld %ld", &n, &m);
for (long i = 1; i <= m; ++i) {
scanf("%ld %ld", &Y1, &Y2);
++deg[Y1];
++deg[Y2];
}
}
void DFS(long Y1) {
for (long i = 0; i < deg[Y1]; ++i) {
if (!sel[G[Y1][i]]) {
sel[G[Y1][i]] = 1;
DFS(G[Y1][i]);
}
}
}
int main() {
freopen("dfs.in", "r", stdin);
freopen("dfs.out", "w", stdout);
read(); //gradele
for (i = 1; i <= n; ++i) {
G[i] = new long[deg[i]];
}
fclose(stdin);
memset(deg, 0, sizeof(deg));
freopen("dfs.in", "r", stdin);
scanf("%ld %ld", &n, &m);
for (i = 0; i < m; ++i) {
scanf("%ld %ld", &Y1, &Y2);
G[Y1][deg[Y1]++] = Y2;
G[Y2][deg[Y2]++] = Y1;
}
for (i = 1; i <= n; ++i) {
if (!sel[i]) {
sel[i] = 1;
DFS(i);
++sol;
}
}
printf("%ld\n", sol);
for (i = 1; i <= n; ++i) {
delete []G[i];
}
return 0;
}