Cod sursa(job #3032537)

Utilizator TODEToderita Mihai TODE Data 22 martie 2023 12:34:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

ifstream in("bfs.in");
ofstream out("bfs.out");
const int N = 1e5;
int n_vf , n_edgs , s , dist[N + 1];
bool visited[N + 1];
vector<int> m[N + 1];
queue<int> Q;

void bfs(int x){
    visited[x] = true;
    dist[s] = 0;
    Q.push(x);
    while(!Q.empty()){
        int start = Q.front();
        Q.pop();
        for(int y = 0 ; y < m[start].size() ; y++){
            if(!visited[m[start][y]]){
                Q.push(m[start][y]);
                visited[m[start][y]] = true;
                dist[m[start][y]] = dist[start] + 1;
            }
        }
    }
}

int main(){
    in >> n_vf >> n_edgs >> s;
    for(int i = 1 ; i <= n_edgs ; i++){
        int x , y;
        in >> x >> y;
        m[x].push_back(y);
    }
    for(int i = 1 ; i <= n_vf ; i++){
        dist[i] = -1;
    }
    bfs(s);
    for(int i = 1 ; i <= n_vf ; i++){
        out << dist[i] << ' ';
    }
}