Pagini recente » Cod sursa (job #1914389) | Cod sursa (job #1174671) | Cod sursa (job #3241536) | Cod sursa (job #537982) | Cod sursa (job #214587)
Cod sursa(job #214587)
#include <cstdio>
#include <stdlib.h>
#include <cstring>
const int MAX_N = 100010;
int n, m, x, y, sol;
int dg[MAX_N], a[MAX_N], f[MAX_N];
int *g[MAX_N];
void dfs(int x)
{
if (a[x] == 0)
{
++sol;
a[x] = sol;
}
else return;
int i;
for (i = 0; i < dg[x]; ++i)
{
if (a[g[x][i]]) continue;
a[g[x][i]] = a[x];
dfs(g[x][i]);
}
}
int main()
{
int i, j;
freopen("dfs.in", "r", stdin);
freopen("dfs.out", "w", stdout);
scanf("%d %d", &n, &m);
for (i = 1; i <= m; ++i)
{
scanf("%d %d", &x, &y);
++dg[x];
++dg[y];
}
fclose(stdin);
freopen("dfs.in", "r", stdin);
scanf("%d %d", &n, &m);
for (i = 1; i <= n; ++i) g[i] = (int *) malloc(sizeof(int) * dg[i]);
memset(dg, 0, sizeof(dg));
for (i = 1; i <= m; ++i)
{
scanf("%d %d", &x, &y);
g[x][dg[x]++] = y;
g[y][dg[y]++] = x;
}
for (i = 1; i <= n; ++i) dfs(i);
printf("%d\n", sol);
return 0;
}