Cod sursa(job #1522317)

Utilizator popescu.octavianPopescu Octavian popescu.octavian Data 11 noiembrie 2015 16:16:40
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <vector>
#include <queue>
#define NMax 100005

using namespace std;

vector<int> G[NMax];
queue<int> Q;

int N, M, S, i, a, b, viz[NMax], D[NMax], varf;

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

    scanf("%d %d %d\n",&N,&M,&S);

    for(i=1;i<=M;i++)
    {
        scanf("%d %d\n",&a,&b);
        G[a].push_back(b);
    }
    for(i=1;i<=N;i++)
        D[i]=-1;
    D[S]=0;
    viz[S]=1;
    Q.push(S);
    while(!Q.empty())
    {
        varf=Q.front();
        Q.pop();
        for(vector<int>::iterator it=G[varf].begin(); it!=G[varf].end(); ++it)
            if(!viz[*it])
            {
                D[*it]=D[varf]+1;
                viz[*it]=1;
                Q.push(*it);
            }
    }
    for(i=1;i<=N;i++)
        printf("%d ",D[i]);
    return 0;
}