Cod sursa(job #3246653)

Utilizator antonio.grGrigorascu Andrei Antonio antonio.gr Data 3 octombrie 2024 21:36:26
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <vector>
#include <unordered_map>
#include <queue>
#include <iostream>

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int N, M, S;

unordered_map<int, vector<int>> graph;

int bfs(int source, int destination){

    if(source == destination){
        return 0;
    }

    queue<pair<int,int>> q;
    q.push(make_pair(source, 0));

    while(!q.empty()){
        int curr = q.front().first;
        int curr_len = q.front().second;
        q.pop();



        for(auto v : graph[curr]){
            if (curr == destination) {
                return curr_len + 1;
            }

            pair p = make_pair(v, curr_len + 1);
            q.push(p);


        }
    }
    return -1;
}

int main(){

    fin >> N >> M >> S;

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

    for(int i = 1; i <= N; i++){
        fout << bfs(S, i) << " ";
    }

    return 0;
}