Cod sursa(job #635228)

Utilizator arcansielAlina Bratu arcansiel Data 18 noiembrie 2011 21:07:58
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#include <vector>
using namespace std;

#define max 1000001

vector <int> a[max];
int n,cost[max], vecini[max], coada[max],m,s;

void bfs(int x){
  int i,j,l=1;
  for (i=1;i<=n;i++)
    cost[i]=-1;
  cost[x]=0;
  coada[l]=x;
  for (i=1;i<=l;i++)
    for (j=0;j<vecini[coada[i]];j++)
      if(cost[a[coada[i]][j]]==-1){
	    coada[++l]=a[coada[i]][j];
	    cost[coada[l]]=cost[coada[i]]+1;
  }
}
  
  
int main(){
  ifstream f("bfs.in",ifstream::in);
  f>>n>>m>>s;
  int x,y,c;
  for (c=1;c<=m;c++){
  	f>>x>>y;
  	a[x].push_back(y);
  }
  for (c=1;c<=n;c++)
	vecini[c]=a[c].size();
  bfs(s);
  ofstream g("bfs.out",ifstream::out);
  for(c=1;c<=n;c++)
    g<<cost[c]<<" ";
  return 0;
}