Cod sursa(job #1905810)

Utilizator justsomedudePalade Thomas-Emanuel justsomedude Data 6 martie 2017 11:01:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
#define infinit 123456789
using namespace std;
ifstream fin ("bfs.in");
ofstream fout("bfs.out");

int n, m, nod, d[100009];
vector <int> L[100009];

void Citire()
{
   int x, y, i;
   fin >> n >> m >> nod;
   for (i=1; i<=m; i++)
   {
      fin >> x >> y;
      L[x].push_back(y);
   }
   
   for (i=1; i<=n; i++)
        d[i] = infinit;
}

void BFS(int k)
{
  int i, j;
  queue <int> q;
  d[k]=0;
  q.push(k);
  
  while (!q.empty())
  {
     k=q.front();
     q.pop();     
     
     for (j=0; j<L[k].size(); j++)
      {
        i = L[k][j];
        if (d[i]==infinit || d[i]>d[k]+1)
        {                
           d[i]=d[k]+1;
           q.push(i);  
        }   
      }
   }
}

void Afisare()
{
    int i;
    for (i=1; i<=n; i++)
       if (d[i] != infinit)
        fout << d[i] << " ";
       else
        fout << "-1 ";
    fout << "\n";
}

int main ()
{
  Citire();
  BFS(nod);
  Afisare();
  fin.close();
  fout.close();
  return 0;
}