Cod sursa(job #504423)

Utilizator pykhNeagoe Alexandru pykh Data 27 noiembrie 2010 17:36:20
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<vector>
#include<cstdio>
using namespace std;

const char in[]="bfs.in";
const char out[]="bfs.out";

const int N = 100001;

vector<int>G[N];

int n, m, S, v[N], d[N];

void bfs(int x)
	{
		for(unsigned int i = 0 ; i < G[x].size() ;  ++i)
		if(!d[G[x][i]] || d[G[x][i]] > d[x] + 1)
		{
			v[++v[0]] = G[x][i];
			d[G[x][i]] = d[x] + 1;
		}
}
			

int main()
	{
		freopen(in,"r",stdin);
		freopen(out,"w",stdout);
		scanf("%d%d%d", &n, &m, &S);
		for(int i = 1 ; i <= n ; ++i)
			{
				int x, y;
				scanf("%d%d", &x, &y);
				G[x].push_back(y);
		}
		v[++v[0]] = S;
		for(int i = 1 ; i <= v[0]; ++i)
			bfs(v[i]);
		
		for(int i = 1 ; i <= n ; ++i)
			if(!d[i])printf("-1 ");
		else printf("%d ",d[i]);
			return 0;
}