Cod sursa(job #616802)

Utilizator nbibestNeagu Bogdan Ioan nbibest Data 13 octombrie 2011 13:36:39
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <stdio.h>

using namespace std;

int nn,n,s,x,m[100000][1000],y,v[100100],i,j,k,d[1000100],a,b,u,p;


int main()
{

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

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

    for (i=1;i<=nn;i++)
    {
        scanf("%d %d",&x,&y);
        m[x][0]++;
        m[x][m[x][0]]=y;
    }

    for (i=1;i<=n;i++)
    v[i]=-1;

    v[s]=0;

    p=0;u=1;d[1]=s;
    while (p<=u)
    {
        d[p]=0;
        p++;

        for (i=1;i<=m[d[p]][0];i++)
        {
            if (v[m[d[p]][i]]==-1)
            {
                u++;
                d[u]=m[d[p]][i];
                v[m[d[p]][i]]=v[d[p]]+1;
            }
        }

    }


    for (i=1;i<=n;i++)
    printf("%d ",v[i]);


    return 0;
}