Cod sursa(job #829960)

Utilizator AivilAtomei Ioana Aivil Data 6 decembrie 2012 09:09:29
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#include<queue>
#include<vector>
using namespace std;
queue <int> Q;
vector <int> V[1005];
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,p;
int viz[100005];
int nivel[100005];
int main(){
	f>>n>>m>>p;
	for(int i=1;i<=m;++i){
		int x,y;
		f>>x>>y;
		V[x].push_back(y);
	}
	for(int i=1;i<=n;++i) nivel[i]=-1;
	Q.push(p);
	viz[p]=1;
	nivel[p]=0;
	while(!Q.empty()){
		int a=Q.front(); Q.pop();
		vector <int>::iterator it=V[a].begin(), sf=V[a].end();
		for(; it!=sf;++it){
				if(!viz[*it]){ 
					viz[*it]=1;
					nivel[*it]=nivel[a]+1;
					Q.push(*it);
				}
		}
	}
	for(int i=1;i<=n;++i) g<<nivel[i]<<' ';
	return 0;
	
}