Cod sursa(job #767714)

Utilizator alexandru93moraru alexandru sebastian alexandru93 Data 14 iulie 2012 14:38:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <vector>
#include <queue>
#define maxn 100010
using namespace std;

int N,M,S;
queue <int> Q;
vector <int> Viz;
vector <vector<int> > V;

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

int main(){
    ifstream f("bfs.in");
	ofstream g("bfs.out");
	
	int x,y;
	f>>N>>M>>S;
	
	V.resize(N+1);
	Viz.resize(N+1);
	
	for(int i=1;i<=N;i++)
		Viz[i]=-1;
	
	for(int i=1;i<=M;i++){
		f>>x>>y;
		V[x].push_back(y);
	}
	
	BFS(S);

	for(long i=1;i<=N;i++)
			g<<Viz[i]<<' ';
	g<<'\n';
	g.close();
	return 0;
}