Cod sursa(job #2661675)

Utilizator DenisaCantuCantu Denisa DenisaCantu Data 22 octombrie 2020 15:28:30
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;
ifstream f ("bfs.in");
ofstream g ("bfs.out");
#define MAX 100001
int n, m, sursa;
vector < int > a[MAX];
int vecini[MAX], coada[MAX], cost[MAX];

void BFS (int nod)
{
   int prim = 1;
   int ultim = 1;
   cost[nod] = 0;
   coada[prim] = nod;

  while (prim <= ultim)
  {
     for (int j = 0; j < vecini[coada[prim]]; j++)
         if (cost[a[coada[prim]][j]]  == -1)
         {
             coada[++ultim] = a[coada[prim]][j];
             cost[coada[ultim]] = cost[coada[prim]] + 1;

         }
     prim++;
  }


}
int main()
{
    int x, y;
    cin >> n >> m >> sursa;
    cout<< n;
    for (int i = 1; i <= m; i++)
    {
        cin >> x >> y;
        a[x].push_back(y);
    }
    for (int i = 1; i <= n; i++)
        vecini[i] = a[i].size();
    for (int i = 1; i <= n; i++)
        cost[i] = -1;
    BFS(sursa);
    for ( int i = 1; i <= n; i++)
        g << cost[i] << " ";
    return 0;
}