Cod sursa(job #361301)

Utilizator BaduBadu Badu Badu Data 4 noiembrie 2009 16:31:41
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>
#include<vector>
#define max 100001
#define pb push_back

using namespace std;


vector< vector <int> > a(max);
int q[max];
int c[max];
int n,m,st;
int dim;

void data(){

	FILE *f=fopen("bfs.in","r");

	fscanf(f,"%d%d%d",&n,&m,&st);
	int x,y;
	for( ; m-- ; ){
			fscanf(f,"%d%d",&x,&y);
			a[x].pb(y);
	}
}

void bfs(int start){

	memset(c,-1,sizeof(c));

	int i,j;
	dim = 1;
	c[ start ] = 0;
	q[ dim ] = start;

	
	for( i=1; i<= dim ; i++)

		for( j=0; j< a[ q[i] ].size(); j++) 
				
			if( c[a[q[i]][j]] == -1 ) {

				q[++dim] = a[ q[i] ][j];
				c[ q[dim] ] = c[ q[i] ] + 1;
			}	
}
				
int main(){

	FILE *g=fopen("bfs.out","w");
	
	data();
	bfs(st);
	int i;
	for(i = 1;i<=n; i++) fprintf(g,"%d ",c[i]);
	return 0;
}