Cod sursa(job #1761725)

Utilizator geni950814Geni Geni geni950814 Data 22 septembrie 2016 19:36:32
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <cstdio>
#include <fstream>
#include <vector>
#include <deque>
#include <iostream>

using namespace std;

int n, m, s;
vector<int> result;
deque<int> queue;
vector<vector<int>> edges;

void bfs() {
  int count = 0;
  result[s] = count;
  queue.push_back(s);
  int curr;
  while(!queue.empty()) {
    curr = queue.front();
    queue.pop_front();
    for(int e : edges[curr]) {
      if(result[e] == -1) {
        queue.push_back(e);
        result[e] = ++count;
      }
    }
  } 
}
  
int main() {
  ifstream f("bfs.in");
  ofstream g("bfs.out");
  f >> n >> m >> s;
  int fst, snd;  

  for(int i = 1; i <= m; i++) {
    f >> fst >> snd;
    edges[fst].push_back(snd);
    result[i] = -1;
  }
  
  bfs();
  for(int i = 1; i <= m; i++) {
    g << result[i] << " ";
  }

  return 0;
}