Cod sursa(job #401754)

Utilizator c_e_manuEmanuel Cinca c_e_manu Data 23 februarie 2010 08:43:37
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream>
#include<vector>
#include<queue>
#define MaxN 100005

using namespace std;

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

vector<int> G[MaxN];
queue<int> qu;

int i,n,m,s,x,y,c[MaxN];

void bfs(int node)
{	vector<int>::iterator it;
	qu.push(node);
	c[node]=0;
	while(!qu.empty())
	{	x=qu.front();
		for(it=G[x].begin();it!=G[x].end(); it++)
			if(c[*it]==-1)
			{	c[*it]=c[x]+1;
				qu.push(*it);
			}
		qu.pop();
	}
}

int main()
{	fin>>n>>m>>s;
	for(i=1;i<=m;i++)
	{	fin>>x>>y;
		G[x].push_back(y);
	}
	memset(c, -1, sizeof(c));
	bfs(s);
	for(i=1;i<=n;i++)
		fout<<c[i]<<' ';
}