Cod sursa(job #1126644)

Utilizator DeclinGogonea Andrei Declin Data 27 februarie 2014 08:34:11
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>
using namespace std;
struct graf
{
    int x;
    graf *y;
};
graf *a[100001];
short b[100001];
void bag(int x, int y)
{
    graf *q = new graf;
    q->x = y;
    q->y = a[x];
    a[x] = q;
}
void parcur(int i)
{
    b[i]=1;
    while(a[i]!=NULL)
    {
        if(b[a[i]->x]==0) parcur(a[i]->x);
        a[i]=a[i]->y;
    }
}
int main()
{
    int i,n,m,x,nr;
    freopen("dfs.in","r",stdin);
    freopen("dfs.out","w",stdout);
    scanf("%d%d",&n,&m);
    for(i=0;i<m;++i)
    {
        scanf("%d%d",&x,&nr);
        bag(x,nr);
        bag(nr,x);
    }
    nr=0;
    for(i=1;i<=n;++i)
    if(b[i]==0)
    {
        ++nr;
        parcur(i);
    }
    printf("%d\n",nr);
    return 0;
}