Cod sursa(job #1323501)

Utilizator andreismara97Smarandoiu Andrei andreismara97 Data 21 ianuarie 2015 09:30:39
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;

#define Nmax 100005

vector <int> lista[Nmax], coada;
int N, M, Start;
int ct[Nmax]={0};

int Bfs(int nod)
{
    coada.push_back(nod);

    ct[nod]=1;

    while(!coada.empty())
    {
        int st=coada.front();
        for(int i=0; i < lista[ st ].size(); i++)
        {
            if(ct[ lista[ st ][i] ] == 0)
            {
                if(!lista[st].empty())
                coada.push_back( lista[st][i]);
                ct[lista[st][i]]=ct[st]+1;
            }
        }
        coada.erase(coada.begin());
    }
}

int main ()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);

    int x, y;

    scanf("%d %d %d",&N, &M, &Start);

    for(int i=1; i<=M; i++)
    {
        scanf("%d %d",&x, &y);
        lista[x].push_back(y);
    }

    Bfs( Start);

    for(int i=1; i<=N; i++)
        printf("%d ",ct[i]-1);
    return 0;
}