Cod sursa(job #2036636)

Utilizator denismanaManaila Denis Daniel denismana Data 10 octombrie 2017 21:23:44
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.3 kb
#include<iostream>
#include<fstream>
#include<iomanip>
#include<vector>
using namespace std;
ifstream in ("dfs.in");
ofstream out ("dfs.out");

vector <int> v[20],viz,coada;
int N,M,u,p;
void citire()
{
    int X,Y,i,j;
    in>>N>>M;
    for(i=1;i<=N;i++)
        v[i].push_back(0);
    for(i=1;i<=M;i++)
    {
        in>>X>>Y;
        v[X].push_back(Y);
        v[Y].push_back(X);
    }
}
void declarare_viz_coada()
{
    int i;
    for(i=0;i<=N;i++)
    {
        viz.push_back(0);
        coada.push_back(0);
    }

}
int exista_nod_nevizitat()
{
    int i;
    for(i=1;i<=N;i++)
        if(viz[i]==0)
            return i;
    return 0;
}
void parcurgere_latime(int &p,int &u,int x)
{
    int i;
    coada[u]=exista_nod_nevizitat();
    viz[p]=x;
    u++;
    while(p<=u)
    {

        for(i=1;i<v[p].size();i++)
        {
            if(viz[v[p][i]]==0)
            {
                coada[u]=v[p][i];
                u++;
                viz[v[p][i]]=x;
            }

        }
        p++;
    }
}
int main()
{
    int x=0,i;
    u=1;p=1;
    citire();
    declarare_viz_coada();
    while(exista_nod_nevizitat())
    {
        p=exista_nod_nevizitat();
        parcurgere_latime(p,u,x);
        x++;
    }
    out<<x;


    return 0;

}