Cod sursa(job #291433)

Utilizator cyberpunkTeodor Tudor cyberpunk Data 29 martie 2009 20:46:50
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<stdio.h>
int lg[100];
int p[100];
struct lista{
	int inf;
	lista*adr;};
lista*v[100];
void bfs(int x){
	p[x]=1;
	for (lista*aux=v[x];aux!=NULL;aux=aux->adr){
		if (p[aux->inf]!=1){
			if (lg[aux->inf]==-1)
				lg[aux->inf]=1;
			else
				lg[aux->inf]++;
	}}
	for (lista*aux=v[x];aux!=NULL;aux=aux->adr){
		if (p[aux->inf]!=1)
			bfs(aux->inf);
	}
}
	
int main (){
	freopen ("bfs.in","r",stdin);
	freopen ("bfs.out","w",stdout);
	int n,m,s;
	scanf ("%d %d %d",&n,&m,&s);
	int x,y;	
	for (int i = 1;i<=m;i++){
		scanf ("%d %d",&x,&y);
		if (v[x]==NULL)
			{
				lista*aux = new lista;
				aux->inf = y;
				aux->adr=NULL;
				v[x]=aux;
		}
		else
		{	lista*aux = new lista;
			aux = v[x];
			for (;aux->adr!=NULL;aux=aux->adr);
			lista *aux2 = new lista;
			aux2->inf = y;
			aux2->adr=NULL;
			aux->adr=aux2;
		}
	}
	for (int i=1;i<=100;i++)
		lg[i]=-1;
	lg[s]=0;
	p[s]=1;
	bfs(s);
	printf ("%d",v[5]->inf);
	for (int i=1;i<=n;i++)
		printf ("%d ",lg[i]);
	return 0;
}