Cod sursa(job #2398689)

Utilizator isa_tudor_andreiAndrei Tudor isa_tudor_andrei Data 5 aprilie 2019 21:01:48
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <vector>
#include <deque>
#define NMAX 100000

using namespace std;

vector<int> g[NMAX + 1];
deque<int> q;
int cost[NMAX + 1];
bool viz[NMAX + 1];

int main() {
    ifstream fin("bfs.in");
    ofstream fout("bfs.out");
    int n, m, i, a, b, source;
    fin>>n>>m>>source;
    for( i = 1; i <= m; i ++ ) {
      fin>>a>>b;
      g[a].push_back(b);
    }
    for( i = 1; i <= n; i ++ )
      cost[i] = -1;
    cost[source] = 0;
    viz[source] = 1;
    q.push_back(source);
    while( !q.empty() ) {
      int nod = q.front();
      q.pop_front();
      for( auto dest : g[nod] ) {
        if( viz[dest] == 0 ) {
          cost[dest] = cost[nod] + 1;
          q.push_back(dest);
          viz[dest] = 1;
        }
      }
    }
    for( i = 1; i <= n; i ++ )
      fout<<cost[i]<<" ";
    return 0;
}