Cod sursa(job #728102)

Utilizator OwnedCheciches Marius Owned Data 28 martie 2012 14:58:59
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <vector>
using namespace std;

#define maxn 100001

vector <int> a[maxn];
int cost[maxn],c[maxn],n,m,s,b[maxn];

void citire(){
	int i,x,y;
	ifstream f("bfs.in");
	f>>n>>m>>s;
	for(i=1;i<=m;i++){
		f>>x>>y;
		a[x].push_back(y);}
	f.close();}

void afisare(){
	ofstream g("bfs.out");
	for(int i=1;i<=n;i++)
		g<<cost[i]<<" ";
	g.close();}

void bfs(int s){
	int u,p,i;
	for(i=1;i<=n;i++)
		cost[i]=-1;
	u=1;
	cost[s]=0;
	c[u]=s;
	for(p=1;p<=u;p++)
		for(i=0;i<b[c[p]];i++)
			if(cost[a[c[p]][i]]==-1){
				u++;
				c[u]=a[c[p]][i];
				cost[c[u]]=cost[c[p]]+1;}}

int main(){
	citire();
	for(int i=1;i<=n;i++)
		b[i]=a[i].size();
	bfs(s);
	afisare();
	return 0;}