Cod sursa(job #2423863)

Utilizator livliviLivia Magureanu livlivi Data 22 mai 2019 00:47:29
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

int main(){
    ifstream cin ("bfs.in");
    ofstream cout ("bfs.out");
    
    int n, m, start; cin >> n >> m >> start;
    vector<vector<int>> edge(n);
    
    for(int i = 0; i < m; i++){
        int a, b; cin >> a >> b;
        edge[a - 1].push_back(b - 1);
    }
    
    queue<int> Q; Q.push(start - 1);
    vector<int> dist(n, -1); dist[start - 1] = 0;
    
    while(!Q.empty()){
        int now = Q.front();
        Q.pop();
        
        for(auto i : edge[now])
            if (dist[i] == -1){
                dist[i] = dist[now] + 1;
                Q.push(i);
            }
    }
    
    for(int i = 0; i < n; i++)
        cout << dist[i] << ' ';
    cout << '\n';
    
    return 0;
}