Cod sursa(job #430060)

Utilizator MKLOLDragos Ristache MKLOL Data 30 martie 2010 18:30:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#define Nmax 100010
struct Nod
{
int val;
Nod *next;
} *l[Nmax];
int coad[Nmax];
int N,viz[Nmax],M,S,k,x,y,st;
void adauga(int a,int b)
{
    Nod *q=new Nod;
    q->val=b;
    q->next=l[a];
    l[a]=q;
}
void make_bf(int a)
{
    Nod *it=l[a];
    for(it=l[a];it!=NULL;it=it->next)
    {
        if(viz[it->val]==0)
        {
            coad[k++]=it->val;
            viz[it->val]=viz[a]+1;
        }
    }
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&N,&M,&S);
coad[k++]=S;
viz[S]=1;
for(int i=1;i<=M;++i)
    {
        scanf("%d%d",&x,&y);
        adauga(x,y);
    }
    while(st<k)
    {
        make_bf(coad[st]);
        ++st;
    }
    for(int i=1;i<=N;++i)
    {
        printf("%d ",viz[i]-1);
    }
}