Cod sursa(job #3226084)

Utilizator RosheRadutu Robert Roshe Data 19 aprilie 2024 22:20:06
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <cstring>
#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);
  visited[x] = 1;
  memset(cost, -1, sizeof(cost));
  cost[x] = 0;
  while(!q.empty()){
    int node = q.front();
    q.pop();
    for(auto it : adiacenta[node])
      if(visited[it] == 0){
        q.push(it);
        cost[it] = cost[node] + 1;
        visited[it] = 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;
}