Cod sursa(job #910882)

Utilizator Kira96Denis Mita Kira96 Data 11 martie 2013 10:05:53
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
#include<algorithm>
#include<vector>
#define NMAX 100001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct el
{	int nod,d; } c[NMAX];
int cm(el A,el B)
{
	return A.nod<B.nod;
}
int i,n,m,x,y,d,p,k,u;
bool viz[NMAX];
vector<int>v[NMAX];
void bfs(int x)
{
	p=u=1;
	c[1].nod=x;
	viz[x]=1;
	c[u].d=0;
	vector<int>::iterator it;
	while(p<=u)
	{
	for(it=v[c[p].nod].begin() ;it!=v[c[p].nod].end() ;it++)
		if(!viz[*it])
		{
			viz[*it]=1;
			c[++u].nod=*it;
			c[u].d=c[p].d+1;
		}
		++p;
	}
	for(i=1;i<=n;++i)
		if(!viz[i])
		{
			c[++u].nod=i; c[u].d=-1; }
}
int main ()
{
	f>>n>>m>>k;
	for(i=1;i<=m;++i)
	{
		f>>x>>y;
		v[x].push_back(y);
	}
	for(i=1;i<=n;++i)
		c[i].d=-1;
	bfs(k);
	sort(c+1,c+n+1,cm);
	for(i=1;i<=n;++i)
	{
		g<<c[i].d<<" ";
	}
	return 0;
}