Cod sursa(job #794159)

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

#define pb push_back

vector <int> a[NMAX];

vector<int> c;

int main()
{

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

	int n,m ,x, y,s,min[NMAX],viz[NMAX];
	
	scanf("%d %d %d",&n,&m,&s);

	c.pb(s);
	min[s]=1;

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

	while(c.size()!=0)
	{
		
		x=c.front();
		viz[x]=1;
		
		
		while(a[x].size()!=0)
		{
			
			y=a[x].front();
			if(viz[y]!=1)
				{
					
					c.pb(y);
					min[y]=min[x]+1;				
				}

			a[x].erase(a[x].begin());

		}

		c.erase(c.begin());
		
	}

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


	return 0;
}