Cod sursa(job #275666)

Utilizator GagosGagos Radu Vasile Gagos Data 10 martie 2009 16:44:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<stdio.h>
typedef struct nod
{
	int inf;
	nod *urm;
}*pnod;
pnod v[100001];
int p,u,c[100001],n,m,viz[100001],s;
void add(pnod &p,int j)   
{   
    pnod q;   
    q=new nod;   
    q->inf=j;   
    q->urm=p;   
    p=q;   
}   
void read()   
{   
    int i,l,j;   
    scanf("%d %d %d",&n,&m,&s);   
    for(l=1;l<=m;++l){   
        scanf("%d %d",&i,&j);   
        add(v[i],j);
	}
}
void BFS(int x)
{
	pnod q;
	p=1;
	u=1;
	c[u]=x;
	viz[x]=1;
	while(p<=u){
		x=c[p];
		for(q=v[x];q!=NULL;q=q->urm)
			if(viz[q->inf]==0){
				c[++u]=q->inf;
				viz[q->inf]=viz[x]+1;
			}
		p++;
	}
}
int main()   
{
	int i;
    freopen("bfs.in","r",stdin);   
    freopen("bfs.out","w",stdout);   
    read();
	BFS(s);
	for(i=1;i<=n;++i)
		printf("%d ",viz[i]-1);
	printf("\n");
    fcloseall();
	return 0;   
}