Cod sursa(job #871386)

Utilizator mihai27Mihai Popescu mihai27 Data 4 februarie 2013 19:43:18
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#include<vector>

using namespace std;

ifstream in("bfs.in");
ofstream out("bfs.out");

int nod,m,n,s,i,x,y,nr,D[100001],ok[100001];
vector<int> a[100001],Q,Q2;
vector<int>::iterator it,it2;

void BF(int start)
{
	Q.push_back(start);
	ok[start]=1;
	nr=1;
	
	while (!Q.empty())
	{
		for (it=Q.begin();it!=Q.end();it++)
		{
			nod=*it;
			for (it2=a[nod].begin();it2!=a[nod].end();it2++)
				if (!ok[*it2])
				{
					ok[*it2]=1;
					D[*it2]=nr;
					Q2.push_back(*it2);
				}
		}
		nr++;
		Q=Q2;
		Q2.clear();
	}
}

int main()
{
	in>>n>>m>>s;
	for (i=1;i<=m;i++)
	{
		in>>x>>y;
		a[x].push_back(y);
	}
	for (i=1;i<=n;i++)
		D[i]=-1;
	D[s]=0;
	
	BF(s);
	for (i=1;i<=n;i++)
		out<<D[i]<<' ';
}