Cod sursa(job #1113034)

Utilizator dascalutudorDascalu Tudor dascalutudor Data 20 februarie 2014 11:44:27
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>

using namespace std;
ifstream in("dfs.in");
ofstream out("dfs.out");
const int Nmax=100000;
const int Mmax=200000;
int n,m,ok,d,viz[Nmax];
struct lista
{   int v;
    lista *urm;

};
lista *cap[100],*nou;
int vecin(int a,int b)
{   nou=cap[a];

    while(nou)
    {   if(nou->v==b)
        return 1;
        nou=nou->urm;
    }
    return 0;

}

void dfs(int ns)
{   int i;
    viz[ns]=1;
    for(i=1;i<=n;i++)
    {   if(viz[i]==0)
        if(vecin(ns,i)==1)
        {
            dfs(i);
        }
    }

}
int main()
{
    int a,b,i;
    in>>n>>m;
    for(i=1;i<=m;i++)
    {   in>>a>>b;
        nou=new lista;
        nou->v=b;
        nou->urm=cap[a];
        cap[a]=nou;
    }
    /*for(i=1;i<=n;i++)
    {   nou=cap[i];
        out<<i<<":";
        while(nou)
        {   out<<nou->v<<" ";
            nou=nou->urm;

        }
        out<<endl;

    }*/
    viz[1]=1;
    for(i=1;i<=n;i++)
    {   if(viz[i]==0)
        {dfs(i);
        d++;
        }

    }
out<<d-1;

    return 0;
}