Cod sursa(job #742330)

Utilizator Stefex09Stefan Teodorescu Stefex09 Data 29 aprilie 2012 16:01:09
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>

using namespace std;

const int maxn = 100010;

int m,n,nod_sursa,sol[maxn];

vector <int> graf[maxn];

void init()
{
	ifstream in("bfs.in");
	
	int i,a,b;
	
	in>>n>>m>>nod_sursa;
	
	for(i=1;i<=m;i++){
		in>>a>>b;
		graf[a].push_back(b);
	}
	
	memset(sol,-1,sizeof(sol));
}

void solve()
{
	vector <int> :: iterator it;
	queue <int> Q;
	int nod;
	
	sol[nod_sursa]=0;
	Q.push(nod_sursa);
	
	while(!Q.empty()){
		nod=Q.front();
		Q.pop();
		
		for(it=graf[nod].begin();it!=graf[nod].end();++it)
			if(sol[*it]==-1){
				sol[*it]=sol[nod]+1;
				Q.push(*it);
			}
	}
}

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

int main()
{
	init();
	solve();
	write();
	return 0;
}