Cod sursa(job #667482)

Utilizator raduiris94Alexa Radu raduiris94 Data 23 ianuarie 2012 11:03:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<cstdio>
#include<vector>
#include<queue>
#define DN 100005
using namespace std;
int n, m, s, viz[DN];
vector<int> gr[DN];
queue <int>c;
int main()
{
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);
	scanf("%d%d%d", &n, &m, &s);
	for(int i=1; i<=m; ++i)
	{
		int a, b;
		scanf("%d%d", &a, &b);
		gr[a].push_back(b);
	}
	for(int i=1; i<=n; ++i) viz[i]=-1;
	viz[s]=0;
	for(c.push(s); c.size(); c.pop())
	{
		int fr=c.front();
		for(int i=0; i<gr[fr].size(); ++i)
		{
			int fiu=gr[fr][i];
			if(-1==viz[fiu])
			{
				viz[fiu]=viz[fr]+1;
				c.push(fiu);
			}
		}
	}
	for(int i=1; i<=n; ++i)
		printf("%d ", viz[i]);
}