Cod sursa(job #875103)

Utilizator mads2194FMI - Andrei Stroe mads2194 Data 9 februarie 2013 18:29:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<cstdio>
#include<vector>
#include<queue>

#define N 100001

using namespace std;

int n,m,st,d[N];

vector <int> a[N];

void read()
{
	scanf("%d %d %d",&n,&m, &st);
	
	int x,y;
	while(m--)
	{
		scanf("%d %d",&x,&y);
		a[x].push_back(y);
	}
}

int main()
{
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	
	read();
	for(int i=1;i<=n;++i)
		d[i]=-1;	
	d[st]=0;
	
	queue <int> q;
	int x,y;
	q.push(st);
	while(!q.empty())
	{
		x=q.front();
		q.pop();
		
		for(size_t i=0;i<a[x].size();++i)
		{
			y=a[x][i];
			if(d[y]==-1)
			{
				d[y]=1+d[x];
				q.push(y);
			}
		}
	}
	
	for(int i=1;i<=n;++i)
		printf("%d ",d[i]);
	
	return 0;
}