Cod sursa(job #916596)

Utilizator EduardGeorgescuGeorgescu Eduard EduardGeorgescu Data 16 martie 2013 18:13:19
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
#include<vector>

using namespace std;

vector <int> Graf[100010];
int G[100010],S[100010],Cost[100010];
int L;

void BFS(int nod){
	
	int i,j;
	
	memset (Cost , -1 , sizeof(Cost) );
	
	L=1;
	Cost[nod]=0;
	S[L]=nod;
	
	for(i = 1 ; i <= L ; i ++)
		for(j=0;j < G[S[i]] ; j ++)
			if(Cost[Graf[S[i]][j]] == -1)
			{
				S[++L]=Graf[S[i]][j];
				Cost[S[L]] = Cost[S[i]]+1;
			}
			
}

int main(){
	
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	
	int N,M,Start;
	
	scanf("%d%d%d" ,&N , &M ,&Start);
	
	int i,nod1,nod2;
	
	for( i = 1 ; i <= M ; i ++){
		scanf("%d%d" ,&nod1 , &nod2);
		Graf[nod1].push_back(nod2);
	}
	
	for( i = 1 ; i <= N ; i ++)
		G[i] = Graf[i].size();
	
	BFS(Start);
	
	for ( i = 1 ; i <= N ; i ++)
		printf("%d " , Cost[i]);
	
	return 0;
}