Cod sursa(job #3263722)

Utilizator vlaseizabelaVlase Izabela Andreea vlaseizabela Data 16 decembrie 2024 11:27:10
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#define NMAX 100001

using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");

int n,start;
vector<int> a[NMAX];
int viz[NMAX];
//viz[i]=0 daca nu a fost vizitat , respectiv nr de vf de pe cel mai scurt drum de la start la i
int c[NMAX];
int inc,sf;

void citire();
void bfs(int x);
int main()
{
    citire();
    bfs(start);
    for(int i=1;i<=n;i++)
      fout<<viz[i]-1<<' ';
    fout.close();
    return 0;
}
void citire()
{
  int m,i,x,y;
  fin>>n>>m>>start;
  for(i=0;i<m;i++)
  {
    fin>>x>>y;
    a[x].push_back(y);
  }
}
void bfs(int x)
{
  int i;
  //fout<<x<<' ';
  viz[x]=1;
  c[1]=x;
  inc=sf=1;
  while(inc<=sf)
  {
    x=c[inc++];
    //parcurg vf adiacente cu x
  for(i=0;i<a[x].size();i++)
    if(!viz[a[x][i]])
    {
      viz[a[x][i]]=1+viz[x];
      c[++sf]=a[x][i];
    }
  }

}