Cod sursa(job #2796912)

Utilizator mihaipriboimihailucapriboi mihaipriboi Data 8 noiembrie 2021 23:44:51
Problema BFS - Parcurgere in latime Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
// Mihai Priboi

#include <stdio.h>
#include <vector>
#include <queue>

using namespace std;

#define MAXN 100000

vector<int> muchii[MAXN + 1];
int noduri[MAXN + 1];

queue<int> myQueue;

int main() {
  FILE *fin, *fout;
  int n, m, i, x, y, s, point;

  fin = fopen( "bfs.in", "r" );

  fscanf( fin, "%d%d%d", &n, &m, &s );
  for( i = 0; i < m; i++ ) {
    fscanf( fin, "%d%d", &x, &y );
    muchii[x].push_back(y);
  }

  fclose( fin );

  for( i = 1; i <= n; i++ )
    noduri[i] = -1;

  myQueue.push(s);
  noduri[s] = 0;
  while( myQueue.size() ) {
    point = myQueue.back();
    myQueue.pop();
    for( i = 0; i < muchii[point].size(); i++ ) {
      if( noduri[muchii[point][i]] == -1 ) {
        noduri[muchii[point][i]] = noduri[point] + 1;
        myQueue.push( muchii[point][i] );
      }
    }
  }

  fout = fopen( "bfs.out", "w" );
  
  for( i = 1; i <= n; i++ )
    fprintf( fout, "%d ", noduri[i] );

  fclose( fout );
  return 0;
}