Cod sursa(job #2758595)

Utilizator lahayonTester lahayon Data 11 iunie 2021 14:05:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;


int main()
{
    ifstream cin("bfs.in");
    ofstream cout("bfs.out");
         
    int N, M, S, x, y;
    cin >> N >> M >> S;

    vector<vector<int>> graph(N, vector<int>{});
    vector<bool> visited(N, false);
    vector<int> cost(N, -1);

    for(int i = 0; i < M; ++i){

        cin >> x >> y;
        graph[--x].push_back(--y);
    }

    queue<int> Q;
    Q.push(--S);
    visited[S] = true; cost[S] = 0;
    while(!Q.empty()){

        for(auto vecin : graph[Q.front()]){
            if(!visited[vecin]){
                Q.push(vecin);
                visited[vecin] = true;
                cost[vecin] = cost[Q.front()] + 1;
            }
        }
        Q.pop();
    }

    for(auto c : cost)
        cout << c << " ";
   

    cin.close();
    cout.close();

    return 0;
}