Cod sursa(job #493076)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 16 octombrie 2010 22:17:30
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
#include<vector>
#include<queue>

using namespace std;

const int Nmax = 100001;

vector <int> G[Nmax];
int N, M, Start, cost[Nmax];

void bfs(int Start) {
	queue <int> Q;
	int i;
	memset(cost,-1,sizeof(cost));
	cost[Start]=0;
	Q.push(Start);
	while(!Q.empty()) {
		i=Q.front();
		vector <int> :: iterator it;
		for(it=G[i].begin(); it!=G[i].end(); it++)
			if(cost[*it]==-1) {
				Q.push(*it);
				cost[*it]=cost[i]+1;
			}
		Q.pop();
	}
}

int main() {
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	
	int i, j;
	scanf("%d %d %d",&N,&M,&Start);
	while(M--) {
		scanf("%d %d",&i,&j);
		G[i].push_back(j);
	}
	
	bfs(Start);
	
	for(i=1; i<=N; i++)
		printf("%d ",cost[i]);
	printf("\n");
	
	return 0;
}