Cod sursa(job #3237540)

Utilizator tsg38Tsg Tsg tsg38 Data 9 iulie 2024 21:20:05
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

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

const int DIM = 1e5 + 1;

vector<int> G[DIM];
int dist[DIM];
bool viz[DIM];

int main() {
  ios_base::sync_with_stdio(0);
  fin.tie(0);
  int n, m, s, u, v;

  fin >> n >> m >> s;
  while ( m-- ) {
	fin >> u >> v;
    G[u].push_back(v);
  }
  queue<int> q;
  q.push(s);
  dist[s] = 0;
  viz[s] = true;
  while ( !q.empty() ) {
	u = q.front();
	q.pop();
	for ( auto v : G[u] ) {
	  if ( !viz[v] ) {
		dist[v] = dist[u] + 1;
		q.push(v);
	    viz[v] = true;
	  }
	}
  }
  for ( int i = 1; i <= n; ++i ) {
	fout << (i != s && dist[i] == 0 ? -1 : dist[i]) << " ";
  }
  fin.close();
  fout.close();
  return 0;
}