Cod sursa(job #2501698)

Utilizator AntoniuFicAntoniu Ficard AntoniuFic Data 30 noiembrie 2019 09:47:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <queue>
#include <vector>
#include <fstream>

using namespace std;

int n, m, s;
vector<int>graph[100005];
int lengths[100005];
queue<int> Q;

void bruh(int node){
    for(auto &v : graph[node]){
        if(lengths[v] == 0){
            Q.push(v);
            lengths[v] = lengths[node] + 1;
        }
    }
}

int main() {
    ifstream f("bfs.in");
    ofstream g("bfs.out");
    f>>n>>m>>s;
    for (int i = 0; i < m; ++i) {
        int node, destination;
        f>>node>>destination;
        graph[node - 1].push_back(destination - 1);
    }
    Q.push(s - 1);
    lengths[s - 1] = 1;
    while(!Q.empty()){
        bruh(Q.front());
        Q.pop();
    }
    for (int i = 0; i < n; ++i) {
        g<<lengths[i] - 1<<' ';
    }
    return 0;
}