Cod sursa(job #505800)

Utilizator rares192Preda Rares Mihai rares192 Data 4 decembrie 2010 03:16:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<vector>
#include<queue>
#include<bitset>
using namespace std;

void read();
void BFS(int );
void write();

bitset<100001>s;
int n, m, k;
vector<vector<int> > a;
queue<int > Q;
vector<int > t, d;

int main()
{
	read();
	BFS(k);
	write();
	return 0;
}


void read()
{
	ifstream fin("bfs.in");
	int i , j;
	fin >> n >> m >> k;
	a.resize(n+1);
	t.resize(n+1);
	d.resize(n+1, -1);
	while( fin >> i >> j)
		a[i].push_back(j);
	
	fin.close();
}

void BFS(int x)
{
	Q.push(x);
	s[x] = 1;
	t[x] = 0;
	d[x] = 0;
	
	while( !Q.empty() )
	{
		int j = Q.front();
		Q.pop();
		for(int i = 0; i < (int)a[j].size(); ++i)
		{
			int p = a[j][i];
			if(  !s[p] )
			{
				Q.push(p);
				s[p] = 1;
				t[p] = j;
				d[p] = d[j] + 1;
			}
		}
	}
}


void write()
{
	ofstream fout("bfs.out");
	
	for(int i = 1; i <= n; i++)
		fout << d[i] <<" ";
	
	fout.close();
}