Cod sursa(job #900604)

Utilizator OpportunityVlad Negura Opportunity Data 28 februarie 2013 20:44:13
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <vector>
using namespace std;


ifstream fi("bfs.in");
ofstream fo("bfs.out");

long n,m,s,i,j,gr[100001],viz[100001];
vector <int> g[100001],q;



void read(){
	long a,b;
	fi >> n >> m >> s;
	for (i=0; i<m; i++){
		fi >> a >> b;
		g[a].push_back(b);
	}
}

void solve(){
	viz[s]=1; q.push_back(s);
	while (!q.empty()) {
		long x=q.back(); q.pop_back();
		vector <int>::iterator it;
		for (it=g[x].begin(); it!=g[x].end(); it++){
			if (!viz[*it]){viz[*it]=1; q.push_back(*it); gr[*it]=gr[x]+1;}
		}
	}
}

void write(){
	for (i=1; i<=n; i++)
		if ((!gr[i])&&(i!=s)) fo << "-1 "; else fo << gr[i] << " ";
}


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