Cod sursa(job #415312)

Utilizator n3msizN3msiz n3msiz Data 11 martie 2010 09:12:52
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#include<vector>
#define nmax 100002

using namespace std;

unsigned int n,m,s,k,i,c[nmax],p,u,x,y,ic,viz[nmax],d[nmax];

vector<int> v[nmax];

int main(){
	FILE*fin=fopen("bfs.in","r");
	FILE*fout=fopen("bfs.out","w");
	
	fscanf(fin,"%d %d %d",&n,&m,&s);
	
	for(i=1;i<=m;i++){
		fscanf(fin,"%d %d",&x,&y);
		v[x].push_back(y);
	}
	
//	for(i=0;i<v[1].size();i++)
//		fprintf(fout,"%d ",v[1][i]);
	for(i=1;i<=n;i++)
		d[i]=-1;
	
	
	p=1;
	c[++u]=s;
	d[s]=0;
	viz[s]=1;
//	for(i=0;i<v[s].size();i++)
	///	if(viz[v[s][i]]==0){
	//		c[++u]=v[s][i];
	//		viz[v[s][i]]=1;
	//		d[v[s][i]]=1;
	//	}
	
	while(p<=u){
		
		for(k=0;k<v[p].size();k++){
			if(viz[v[p][k]]==0){
				c[++u]=v[p][k];
				viz[v[p][k]]=1;
				d[v[p][k]]=d[d[p]]+1;
			}
		}
		
		p++;
	}
	
	for(i=1;i<=n;i++)
		fprintf(fout,"%d ",d[i]);
		
	fclose(fin);
	fclose(fout);
	return 0;
}