Cod sursa(job #283861)

Utilizator drag0s93Mandu Dragos drag0s93 Data 20 martie 2009 10:59:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<vector>
#include<deque>
#include<list>
#include<algorithm>

#define Nmax 100020

int n,m,s;

int coada[1000020];

using namespace std;

ifstream in("bfs.in");

ofstream out("bfs.out");

vector < int > v[Nmax];

void citire()
{
	int x,y;
	for(int i=1;i<=m;++i)
	{
		in>>x>>y;
		v[x].push_back(y);
	}
}

void solve()
{
	int t=0,x;
	int d[Nmax];
	for(int i=1;i<=n;++i)
		d[i]=-1;
	coada[++t]=s;
	d[s]=0;
	for(int i=1;i<=t;++i)
	{
		x=coada[i];
		for(vector<int>::iterator it=v[x].begin() ; it!=v[x].end() ; ++it)
		{
			if(d[*it]==-1)
			{
				coada[++t]=*it;
				d[*it]=1+d[x];
			}
		}
	}
	for(int i=1;i<=n;++i)
		out<<d[i]<<" ";
}

int main()
{
	in>>n>>m>>s;
	citire();
	solve();
	return 0;
}