Cod sursa(job #731037)

Utilizator ElenaGElena Gaina ElenaG Data 7 aprilie 2012 12:50:16
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
//declarari
const int N=100099;
vector <int> a[N];
queue <int> q;
int n,s, v[N];
//citire
void citire (){
	int x,y,m;
	f>>n>>m>>s;
	for(int i=1;i<=m;i++){
		f>>x>>y;
		a[x].push_back(y);
	}
	for(int i=1;i<=n;i++)
		v[i]=-1;
}
//bfs
void bfs (int s){
	int x,y;
	v[s]=0;
	q.push(s);
	while (!q.empty()){
		x=q.front();
		q.pop();
		for (size_t i=0;i<a[x].size();i++){
			y=a[x][i];
			if(v[y]==-1){
				q.push(y);
				v[y]=1+v[x];
			}
		}
		
	}
}
//afisare
void afisare(){
	for (int i=1;i<=n;i++)
		g<<v[i]<<" ";
}

int main(){
	
	citire();
	bfs(s);
	afisare();
	return 0;
}