Cod sursa(job #2741852)

Utilizator antanaAntonia Boca antana Data 19 aprilie 2021 17:18:34
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 100001;

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

int q[MAXN], dist[MAXN], visit[MAXN];

vector <int> graf[MAXN];

int main()
{

  int n, m, sursa;
  fin >> n >> m >> sursa;

  for (int i = 1; i <= m; i++) {
    int x, y;
    fin >> x >> y;
    graf[ x ].push_back( y );
  }


  int st = 0;
  int dr = 0;
  visit[ sursa ] = 1;
  dist[ sursa ] = 0;
  q[dr++] = sursa;

  while (st < dr) {
    int nod = q[ st++ ];
    for (int i = 0; i < graf[nod].size(); i++) {
      int vecin = graf[nod][ i ];

      if (visit[vecin] == 0) {
        dist[vecin] = dist[nod] + 1;
        q[dr++] = vecin;
        visit[vecin] = 1;
      }
    }
  }

  for (int i = 1; i <= n; i++) {
    if (visit[ i ] == 0)
      fout << "-1 ";
    else
      fout << dist[ i ] << " ";
  }

  return 0;
}