Cod sursa(job #2029795)

Utilizator ReksioCroftOctavian Florin Staicu ReksioCroft Data 30 septembrie 2017 14:15:24
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <vector>
#include <queue>
#define nmax 100000
using namespace std;
vector <int> v[nmax];
queue <int> coada;
int drum[nmax];

void bfs( int nod ) {
  coada.push( nod );
  drum[nod] = 1;
    while( coada.empty() == 0 ) {
      for ( int i = 0; i < v[ coada.front() ].size(); i++ ) {
        if ( drum[ v[ coada.front() ][i] ] == 0 ) {
          drum[ v[ coada.front() ][i] ] = drum[ coada.front() ] + 1;
          coada.push( v[ coada.front() ][i] );
       }
    }
    coada.pop();
  }
}

int main() {
  int n, m, nod, i, x, y;
  FILE *fin, *fout;
  fin = fopen( "bfs.in", "r" );
  fscanf( fin, "%d%d%d", &n, &m, &nod );
  nod--;
  for ( i = 0; i < m; i++ ) {
    fscanf( fin, "%d%d", &x, &y );
    v[x-1].push_back(y-1);
  }
  fclose( fin );
  bfs( nod );
  fout = fopen( "bfs.out", "w" );
  for ( i = 0; i < n; i++ )
    fprintf( fout, "%d ", drum[i] - 1 );
  fclose( fout );
  return 0;
}