Pagini recente » Cod sursa (job #920723) | Cod sursa (job #3232742) | Cod sursa (job #1126108) | Cod sursa (job #3183439) | Cod sursa (job #287231)
Cod sursa(job #287231)
#include<stdio.h>
#define dim 100//010
struct lista
{
int varf;
lista *urm;
} *v[dim], *ultim[dim], *aux;
int N, M, cont;
int viz[dim], c[dim];
void adauga(int x, int y)
{
if(v[x] == 0)
{
v[x] = new lista;
v[x]->varf = y;
v[x]->urm = 0;
ultim[x] = v[x];
}
else
{
aux = new lista;
aux->varf = y;
aux->urm = 0;
ultim[x]->urm = aux;
ultim[x] = ultim[x]->urm;
}
}
int main()
{
int i, x, y, ok, prim, ultim;
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);
adauga(x, y);
adauga(y, x);
}
for(i = 1; i <= N; i++)
if( viz[i] == 0 )
{
cont++;
c[0] = i;
viz[i] = 1;
prim = ultim = 0;
while( prim <= ultim )
{
x = c[prim];
prim++;
ok = 1;
while( ok )
{
if( viz[v[x]->varf] == 0 )
{
viz[v[x]->varf] = 1;
ultim++;
c[ultim] = v[x]->varf;
}
if( v[x]->urm == 0 )
ok = 0;
v[x] = v[x]->urm;
}
}
}
printf("%d \n", cont);
return 0;
}