Cod sursa(job #629266)

Utilizator cristicecCristian Uricec cristicec Data 3 noiembrie 2011 00:03:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#include<vector>

using namespace std;

int stiva[1000080];
int v[100003];
int numar_nod, numar_muchii,t;

vector<int> muchii[100004];

void citire(){
	scanf("%d", &numar_nod);
	scanf("%d", &numar_muchii);
	scanf("%d", &t);
	int x,y;
	for(int i=1;i<=numar_muchii;i++){
		scanf("%d", &x);
		scanf("%d", &y);
		muchii[x].push_back(y);
	
	}
	
}


void df(int nod){
	int st,dr;
	st=1;
	dr=1;
	stiva[st]=nod;
	v[nod]=1;
	
	while(st<=dr){

		for(unsigned int i=0; i<muchii[stiva[st]].size();i++)
		if(v[muchii[stiva[st]][i]]==0){
			dr++;
			stiva[dr]=muchii[stiva[st]][i];
			v[muchii[stiva[st]][i]]=v[stiva[st]]+1;
			
		}
		
		st++;
		
	}
	
}		
int main(){
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w", stdout);
	citire();
	df(t);
	for(int i=1;i<=numar_nod;i++)
		if(v[i])
			printf("%d ",v[i]-1);
		else
			printf("-1 ");
		
	return 0;
}