Cod sursa(job #724336)

Utilizator hiticas_abelhiticasabel hiticas_abel Data 26 martie 2012 13:58:28
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#include<vector>
#include<bitset>
using namespace std;
const int maxn=100002;
int c[maxn],cost[maxn];


vector <int>A[maxn];
//bitset<maxn>viz;
int viz[maxn];
int n,m,start;

void bfs(int ka)
{
	int li, ls,nr_ve,nod,i;
	
	li=1;
	ls=1;
	c[li]=ka;
	viz[ka]=1;
	
	while(li<=ls)
	 {
		 nod=c[li];
		 nr_ve=A[nod].size();
		 for(i=0;i<nr_ve;i++)
			if(viz[A[nod][i]]==0)
			 {
			 ls++;
			 c[ls]=A[nod][i];
			 viz[A[nod][i]]=1;
			 cost[A[nod][i]]=cost[nod]+1;
			 }
		 li++;
	 }
}


int main()
{
	int i,x,y;
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);

scanf("%d %d %d",&n,&m,&start);
for(i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
A[x].push_back(y);

}

bfs(start);

 for(i=1;i<=n;i++)
 if(cost[i]!=0 || i==start)
	 printf("%d ",cost[i]);
 else
	  printf("-1 ");
 

 return 0;


	
}