Cod sursa(job #673543)

Utilizator Eugen01Vasilescu Eugen Eugen01 Data 4 februarie 2012 16:44:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
#include<vector>
#include<deque>
#include<string.h>
#define pb push_back
#define Nmax 100009

using namespace std;

int nod,i,x,y,n,m,s,nr[Nmax];
vector<int> a[Nmax];
deque<int> Q;
vector<int>::iterator it;

void BF()
{
    Q.pb(s);

    while (!Q.empty())
    {
        nod=Q.front();
        Q.pop_front();

        for (it=a[nod].begin();it!=a[nod].end();it++)
            if (nr[*it]==-1)
            {
                nr[*it]=nr[nod]+1;
                Q.pb(*it);
            }
    }
}

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

    scanf("%d%d%d",&n,&m,&s);

    for (i=1;i<=m;i++)
    {
        scanf("%d%d",&x,&y);
        a[x].pb(y);
    }
    memset(nr,-1,sizeof(nr));
    nr[s]=0;
    BF();
    for (i=1;i<=n;i++)
        printf("%d ",nr[i]);
}