Cod sursa(job #2003860)

Utilizator Stefan_RaduStefan Radu Stefan_Radu Data 24 iulie 2017 11:00:12
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

ifstream cin("bfs.in");
ofstream cout("bfs.out");

int main() {
  int n, m, s;
  cin >> n >> m >> s;

  vector< vector< int > > list(n + 1);
  for(int i = 1; i <= m; i ++) {
    int x, y;
    cin >> x >> y;
    list[x].push_back(y);
  }

  vector< int > dist(n + 1, 1 << 30);
  dist[s] = 0;
  queue< int > q;
  q.push(s);

  while(!q.empty()) {
    int cur = q.front();
    for(int x : list[cur]) {
      if(dist[x] > dist[cur]) {
        q.push(x);
        dist[x] = dist[cur] + 1;
      }
    }
    q.pop();
  }

  for(int i = 1; i <= n; i ++) {
    if(dist[i] < (1 << 30))
      cout << dist[i] << ' ';
    else 
      cout << "-1 "; 
  }
}