Cod sursa(job #1916007)

Utilizator Gigel-FroneGigel Fronel Gigel-Frone Data 8 martie 2017 23:37:57
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#include <vector>
#include <queue>
#define N 100003

using namespace std;

int main()
{
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);
	
	int n, m, s, ans[N];
	scanf("%d%d%d", &n, &m, &s);
	vector <int> G[N];
	queue <int> Q;
	bool seen[N]={0};
	for(int i=1; i<=m; i++)
	{
		int x, y;
		scanf("%d%d", &x, &y);
		G[x].push_back(y);
	}
	ans[s]=1;
	seen[s]=1;
	Q.push(s);
	while(!Q.empty())
	{
		int node=Q.front();
		Q.pop();
		for(int i=0; i<G[node].size(); i++)
			if(!seen[G[node][i]])
			{
				seen[G[node][i]]=1;
				ans[G[node][i]]=ans[node]+1;
				Q.push(G[node][i]);
			}
	}
	for(int i=1; i<=n; i++)
		printf("%d ", ans[i]-1);
		
	return 0; 
}