Cod sursa(job #838617)

Utilizator vladm97Matei Vlad vladm97 Data 20 decembrie 2012 00:28:44
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
#include<vector>
#define lmax 100002
using namespace std;
vector <int> v[lmax];
int parcurs[lmax];
int d[lmax];
int n,m,s;
ifstream f("bfs.in");
ofstream g("bfs.out");

void bfs(){
	int i,aux;
	int c1,c2;
	int c[lmax];
	c1=c2=1;
	c[c2]=s;
	parcurs[s]=1;
	while(c1<=c2){
		aux=c[c1++];
		for(i=0;i<v[aux].size();i++)
			if(parcurs[v[aux][i]]==0){
				parcurs[v[aux][i]]=1;
				d[v[aux][i]]=d[aux]+1;
				c[++c2]=v[aux][i];
			}
		parcurs[aux]=1;
	}
	for(i=1;i<s;i++){
		d[i]==0?g<<-1:g<<d[i];
		g<<" ";}
	g<<0<<" ";
	while(i<n){i++;
	d[i]==0?g<<-1:g<<d[i];
	g<<" ";
	}
}
		


int main(){
	int i,a,b;
	f>>n>>m>>s;
	for(i=1;i<=m;i++){
		f>>a>>b;
		v[a].push_back(b);}
	bfs();
	f.close();
	g.close();
}