Cod sursa(job #408073)

Utilizator xtephanFodor Stefan xtephan Data 2 martie 2010 20:27:32
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<stdio.h>
#include<vector>
#include<queue>

using namespace std;

long n,m,S;
bool viz[100010];
vector<int> Cost(100010,-1);
vector<int> Graf[100010];
queue<int> Q;

void cit();
void afis();
void rez();

int main() {
	
	freopen("bfs.in", "r", stdin);
	freopen("bfs.out", "w", stdout);
	
	cit();
	rez();
	afis();
	
	return 0;
}

void cit() {
	scanf("%ld%ld%ld",&n,&m,&S);
	
	for(long i=1; i<=m;i++) {
		long x,y;
		scanf("%ld%ld",&x,&y);
		Graf[x].push_back(y);
	}
}



void rez() {
	
	Cost[S]=0;
	Q.push(S);
	
	while( ! Q.empty() ) {
		
		int x=Q.front();
		
		Q.pop();
		
		viz[x]=1;
		
		for(long i=0; i < (long)Graf[x].size(); i++ ) {
			
			if( !viz[ Graf[x][i] ]  ) {
				
				Q.push(Graf[x][i]);
				
				Cost[Graf[x][i]]=Cost[x]+1;
			}
			
		}
		
	}
	
}

void afis() {
	for(long i=1; i<=n;i++)
		printf("%d ",Cost[i]);
}