Cod sursa(job #2098122)

Utilizator IustinPetrariuIustinian Petrariu IustinPetrariu Data 2 ianuarie 2018 13:55:42
Problema Parcurgere DFS - componente conexe Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <vector>
#include <fstream>
#define nmax 100010
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int n,m,L,start;
int Stiva[nmax],ans[nmax],G[nmax];
struct node
{
    int x;
    node*urm;
};
node *p[nmax];
void BFS(int nod)
{
    for(int i =1 ; i <= n ; i++)
        ans[i]=-1;
    L=1;
    Stiva[L]=nod;
    ans[nod]=0;
    node *q;
    int w;
    for(int i =1; i <= L; i ++)
        for(int  q=p[Stiva[i]]; q!=NULL ; g=g->urm)
        {
            w=q->x;
            if(ans[Stiva[i][w]]==-1)
            {
                Stiva[++L]=w;
                ans[Stiva[L]]=ans[Stiva[i]]+1;
            }
        }
}
void adauga(int x, nod*& pp)
{
    nod*q=new node;
    q->x=x;
    q->urm=pp;
    pp=q;

}
int main()
{
    int x,y;
    fin>>n>>m>>start;
    for(int i = 1; i <= m ; i ++)
    {
        fin>>x>>y;
        adauga(y,p[x]);
    }

    BFS(start);
    for(int i =1; i <= n ; i++)
        fout<<ans[i]<<" ";
    return 0;
}