Cod sursa(job #285258)

Utilizator ConsstantinTabacu Raul Consstantin Data 22 martie 2009 14:24:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<stdio.h>
#include<string.h>
using namespace std;
struct nod{int val;
        nod *urm;}*v[100005],*u;

int l[100002],c[100005],viz[100002],i,j,k,m,n,p,q,I;


int main(){
memset(l,-1,sizeof(l));
freopen("bfs.in","r",stdin);
scanf("%d %d %d",&n,&m,&I);
l[I]=0;
freopen("bfs.out","w",stdout);

for(i=1;i<=m;i++)
        {scanf("%d %d",&p,&q);
        u=new nod;
        u->val=q;
        u->urm=v[p];
        v[p]=u;}


p=q=1;
c[p]=I;
viz[I]=1;
while(p<=q){
u=v[c[p]];
for(;u;u=u->urm)
        if(!viz[u->val])
                {viz[u->val]=1;
                q++;
                c[q]=u->val;
                l[c[q]]=l[c[p]]+1;
                }
p++;
}
for(i=1;i<=n;i++)
        printf("%d ",l[i]);
return 0;}