Cod sursa(job #2834298)

Utilizator BorodiBorodi Bogdan Borodi Data 16 ianuarie 2022 19:53:51
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>
#include <vector>
#include <queue>
#define VI vector<int>
#define VVI vector<vector<int>>
using namespace std;

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

int n, m, v, a, b;
bool Vis[100001];
int D[100001];
VVI G;
queue <int> Q;

void BFS(int s){
     Vis[s] = 1;
     D[s] = 0;
     Q.push(s);

     while(Q.size()){
          int node = Q.front();

          for(int i = 0; i < G[node].size(); ++i)
               if(Vis[G[node][i]] == 0)
                    Vis[G[node][i]] = 1,
                    Q.push(G[node][i]),
                    D[G[node][i]] = D[node] + 1;
          
          Q.pop();
     }
}

int main() {
     fin >> n >> m >> v; 

     G.resize(n + 1);

     for(int i = 1; i <= n; ++i)
          D[i] = -1;
     for(int i = 1; i <= m; ++i){
          fin >> a >> b;
          G[a].emplace_back(b);
     }

     BFS(v);

     for(int i = 1; i <= n; ++i)
          fout << D[i] << " ";

     return 0;
}