Cod sursa(job #635581)

Utilizator danieladDianu Daniela danielad Data 19 noiembrie 2011 13:20:05
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include <vector>
#define inf 1000001
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
vector <int> a[100001];
int n,m,b,c[100001],s,viz[100001],d[100001];
void citire(int &n)
{int x,y;
f>>n>>m>>s;
for(int i=1;i<=m;i++){
  f>>x>>y;
  a[x].push_back(y);
}
}
void BFS(int s){
  int p,u,v;
  for(int i=1;i<=n;i++){
    viz[i]=0;
    d[i]=inf;
  }
  c[1]=s;
  viz[s]=1;
  p=u=1;
  d[s]=0;
  while(p<=u){
    v=c[p];
    for(int i=0;i<a[v].size();i++)
    if(viz[a[v][i]]==0){
      u++;
      c[u]=a[v][i];
      viz[a[v][i]]=1;
      d[a[v][i]]=d[v]+1;
    }
    p++;
  }
  for(int i=1;i<=n;i++)
if(d[i]!=inf)
g<<d[i]<<" ";
else 
g<<"-1"<<" ";
  
}
int main()
{
citire(n);
BFS(s);

return 0;
    
}