Cod sursa(job #1219035)

Utilizator vasica38Vasile Catana vasica38 Data 13 august 2014 11:21:03
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<stdio.h>

using namespace std;

typedef struct lista
        {
            int info;
            lista * next;
        } * nod;
nod a[100003];
int n,m,d[100003],c[100003],i,j,u,ic,sf;


void add(int x, nod &p)
{
    nod r = new lista;
    r->info=x;
    r->next=p;
    p=r;
}
int main()
{
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&u);
    for (i=1; i<=m ; ++i)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        add(y,a[x]);
    }
    for (i=1; i<=n; ++i) d[i]=-1;
    ic=1;
    d[u]=0;
    sf=1;
    c[1]=u;
    while (ic<=sf)
    {
        nod r=a[c[ic]];
        while (r)
        {
            if (d[r->info]==-1)
            {
                ++sf;
                c[sf]=r->info;
                d[c[sf]]=d[c[ic]]+1;

            }
        r=r->next;
        }
    ++ic;
    }
    for (i=1; i<=n; ++i)printf("%d ",d[i]);
return 0;
}