Cod sursa(job #670567)

Utilizator handz.FMI Andrei Tanasescu handz. Data 29 ianuarie 2012 14:28:35
Problema Parcurgere DFS - componente conexe Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#define maxN 100005
#define maxM 10000005
using namespace std;

ifstream f("dfs.in");
ofstream g("dfs.out");

typedef struct graf
{
    int nod;
    graf *next;
}grf;

grf *list[maxM];
int n,m,saw[maxN],nr=0;

void addN(int x,int y)
{
    grf *q;
    q=new graf;
    q->nod=y;
    q->next=list[x];
    list[x]=q;
}

void read_ini()
{
    f>>n; f>>m;
    int i,a,b;
    for(i=1; i<=m ;i++)
    {
        f>>a; f>>b;
        addN(a,b);
        addN(b,a);
    }
    for(i=1; i<=n ;i++)
        saw[i]=0;
}

void p_dfs(int s)
{
    grf *q;
    saw[s]=1;
    q=list[s];
    while(q)
    {
        if(!saw[q->nod])
            p_dfs(q->nod);
        q=q->next;
    }
}

int main()
{
    read_ini();
    for(int i=1; i<=n ;i++)
    {
        if(!saw[i])
        {
            nr++;
            p_dfs(i);
        }
    }
    g<<nr;
    return 0;
}