Cod sursa(job #2276595)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 4 noiembrie 2018 22:00:13
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <utility>

using namespace std;

const int NMAX = 100005;
typedef pair<int,int> pii;

queue<int> q;
vector<int> g[NMAX];
int d[NMAX];

int N,M,S;

void bfs(int root) {
   q.push(root);

   while (!q.empty()) {
      int node = q.front();
      q.pop();
      for (int v : g[node]) {
         if (d[v] == -1) {
            q.push(v);
            d[v] = d[node] + 1;
         }
      }
   }
}

int main() {
   ifstream iff("bfs.in");
   ofstream off("bfs.out");

   iff >> N >> M >> S;

   for (int i = 0; i <= N; ++i) {
      d[i] = -1;
   }

   d[S] = 0;

   for (int i = 0; i < M; ++i) {
      int n1, n2;
      iff >> n1 >> n2;
      g[n1].push_back(n2);
   }

   bfs(S);

   for (int i = 1; i <= N; ++i) {
      off << d[i] << " ";
   }

   return 0;
}