Cod sursa(job #879971)

Utilizator mmanMihai Manolescu mman Data 16 februarie 2013 01:33:36
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
#include<vector>
#include<queue>

#define dmax 1000003

using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");


int n, m, s, d[dmax], color[dmax];
vector<int>v[dmax];
vector<int>::iterator it;

queue<int>q;

void bfs(int st)
{
	q.push(st);
	d[st] = 0;
	
	while(!q.empty() )
	{
		int hd = q.front();
		q.pop();
		color[hd] = 2;
		
		for(it = v[hd].begin(); it < v[hd].end(); it++)
		{
			if(d[*it] == -1)
			{
				q.push(*it);
				d[*it] = d[hd] + 1;
				color[*it] = 1;
			}			
		}	
	}	
}	


int main()
{
	in>>n>>m>>s;
	
	for(int i=0; i<m; i++)
	{
		int v1, v2;

		in>>v1>>v2;
		
		v[v1].push_back(v2);

	}
	in.close();	
	
	for(int i=1; i<=n; i++)
		d[i] = -1;
	
	bfs(s);
	
	for(int i=1; i<=n; i++)
		out<<d[i]<<" ";
	
	
	out.close();
	return 0;
}