Cod sursa(job #579117)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 11 aprilie 2011 21:06:35
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<cstdio>
#include<vector>
#include<queue>
#define Nmax 100010

using namespace std;

int N,M,S,dist[Nmax];

vector <int> a[Nmax];
queue  <int> c;

int main(){
	
	freopen("bfs.in","r",stdin);
	freopen("bfs.out","w",stdout);
	
	scanf("%d%d%d",&N,&M,&S);
	
	for(int i=1;i<=M;++i){
		
		int x,y;
		scanf("%d%d",&x,&y);
		
		a[x].push_back(y);
	}
	
	memset(dist,-1,sizeof(dist));
	
	dist[S]=0;
	c.push(S);
	
	while(!c.empty()){
		
		int nod=c.front();
		c.pop();
		
		for(vector<int>::iterator it=a[nod].begin(); it!=a[nod].end(); ++it)
			if(dist[*it]==-1){
				
				dist[*it]=dist[nod]+1;
				c.push(*it);
			}
			
	}
	
	for(int i=1;i<=N;++i)
		printf("%d ",dist[i]);	
	
return 0;
}