Cod sursa(job #616829)

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

using namespace std;

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

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);
        c[x]++;
        m[(x-1)*100+c[x]]=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=(d[p]-1)*100+1;i<=(d[p]-1)*100+c[d[p]];i++)
        {
            if (v[m[i]]==-1)
            {
                u++;
                d[u]=m[i];
                v[m[i]]=v[d[p]]+1;
            }
        }

    }


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


    return 0;
}