Cod sursa(job #217174)

Utilizator mihai0110Bivol Mihai mihai0110 Data 27 octombrie 2008 13:04:49
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include<stdio.h>
#define NMAX 100001
struct nod{int n;
            nod *urm;};
nod *nc,*p[NMAX];
int i,n,m,x,y;
int v[NMAX];

void dfs(int x)
{
    nod *nc;
    v[x]=1;
    nc=p[x];
    while(nc)
    {
        if(!v[nc->n])
            dfs(nc->n);
        nc=nc->urm;
    }
}

int main(void)
{
    freopen("dfs.in","r",stdin);
    freopen("dfs.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++)
        p[i]=0;
    for(i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        nc=new nod;
        nc->n=y;
        nc->urm=p[x];
        p[x]=nc;
        nc=new nod;
        nc->n=x;
        nc->urm=p[y];
        p[y]=nc;
    }
    int nrcomp=0;
    for(i=1;i<=n;i++)
    if(!v[i])
    {
        nrcomp++;
        dfs(i);
    }
    printf("%d\n",nrcomp);
    /*for(i=1;i<=n;i++)
    {
        nc=p[i];
        while(nc)
        {
            printf("%d ",nc->n);
            nc=nc->urm;
        }
        printf("\n");
    }*/
    return 0;
}