Cod sursa(job #794188)

Utilizator MtkMarianHagrSnaf MtkMarian Data 5 octombrie 2012 22:07:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<cstdio>
#include<vector>
using namespace std;
#define NMAX 100002

#define pb push_back
vector <int> a[NMAX];



int main()
{

	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);

	int n,m ,x, y,s,*g,*c;
	int viz[NMAX]={0};
	
	scanf("%d %d %d",&n,&m,&s);
	g=new int[n+2];
	c=new int[n+2];
	c[1]=s;

	viz[s]=1;	
	for(int i=1;i<=m;++i)
	{
		scanf("%d %d",&x,&y);
		a[x].pb(y);
	}

	for(int i=1;i<=n;++i)	
		g[i]=a[i].size();

	int l=1;


	for(int i=1;i<=l;++i)
	{
			x=c[i];
			
		
			for(int j=0;j<g[x];++j)
			{
			
				y=a[x][j];
				if(viz[y]==0)
					{					
						c[++l]=y;
						viz[y]=viz[x]+1;				
					}			

			}

	}

		
		
	

		for(int i=1;i<=n;++i)
			if(viz[i]>0)printf("%d ",viz[i]-1);
			else printf("-1 ");


	return 0;
}