Cod sursa(job #811551)

Utilizator ephgstefana gal ephg Data 12 noiembrie 2012 17:08:53
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
#define BM 100005
#define mare (1<<30)
typedef vector<int>::iterator it;
vector<int> g[BM];
queue<int> c;
int n,m,s,rez[BM];
void bfs(){
	for(;c.size();c.pop()){
		int f=c.front();
		for(it ii=g[f].begin();ii!=g[f].end();++ii){
			if(rez[*ii]==mare){
				rez[*ii]=rez[f]+1;
				c.push(*ii);
			}
		}
	}
}
int main () {
	int i,a,b;
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	scanf("%d %d %d",&n,&m,&s);
	for(;scanf("%d %d",&a,&b)!=-1;){
		g[a].push_back(b);
	}
	for(i=1;i<=n;++i)rez[i]=mare;
	rez[s]=0;
	c.push(s);
	bfs();
	for(i=1;i<=n;++i)
		if(rez[i]==mare)printf("-1 ");
		else printf("%d ",rez[i]);
	return 0;
}