Cod sursa(job #3226082)

Utilizator RosheRadutu Robert Roshe Data 19 aprilie 2024 22:08:06
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <queue>
#define SIZE 100010

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector<int> adiacenta[SIZE];
int visited[SIZE], cost[SIZE];
int N, M, S;

void BFS(int x){
  queue<int> q;
  q.push(x);
  memset(cost, -1, sizeof(cost));
  cost[x] = 0;
  while(!q.empty()){
    int node = q.front();
    q.pop();
    visited[node] = 1;
    for(auto it : adiacenta[node])
      if(visited[it] == 0){
        q.push(it);
        cost[it] = cost[node] + 1;
      }
  }
}

int main(){
  
  fin >> N >> M >> S;
  for(int i = 0; i<M; i++){
    int x, y;
    fin >> x >> y;
    adiacenta[x].push_back(y);
  }

  BFS(S);
   
  for(int i = 1; i<=N; i++)
    fout << cost[i] << " ";
  return 0;
}