Cod sursa(job #1249719)

Utilizator bullseYeIacob Sergiu bullseYe Data 27 octombrie 2014 13:03:57
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>
#define DMAX 101
using namespace std;
ofstream fout ("dfs.out");

int C[DMAX];
int n, m, vf_start;
int A[DMAX][DMAX];
bool viz[DMAX];
void citire(), BFS(int);

int main()
{
    int i;
    citire();
    for (i=1; i<=n; ++i)
        if (!viz[i])//face parte din alta parte conexa
            BFS (i);
    fout.close();
    return 0;
}

void citire()
{
    int i, x, y;
    ifstream fin ("dfs.in");
    fin>>n>>m;
    for (i=1; i<=m; ++i)
    {
        fin>>x>>y;
        A[x][++A[x][0]]=y;
        A[y][++A[y][0]]=x;
    }
    fin>>vf_start;
    fin.close();
    return;
}

void BFS (int vf_start)
{
    int prim, ultim, p, i;
    C[1]=vf_start; viz[vf_start]=true;//l-am vizitat

    prim=ultim=1;
    while (prim<=ultim)
    {
        //extrag un element din coada
        p=C[prim++];
        fout<<p<<" ";
        //vizitez toti vecinii lui p
        for (i=1; i<=A[p][0]; ++i)
            if (!viz[A[p][i]])
            {
                viz[A[p][i]]=true;
                C[++ultim]=A[p][i];
            }
    }
    fout<<"\n";
    return;
}