Cod sursa(job #2781253)

Utilizator vzzev edmond vzze Data 8 octombrie 2021 20:11:45
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <vector>
#include <queue>
#include <iostream>

std::ifstream f("bfs.in");
std::ofstream o("bfs.out");

void bfs(std::vector<int> lol[], int vv, int varfuri) {

    int c[varfuri + 1] = { 0 };

    std::queue<int> q; q.push(vv);

    while(!q.empty()) {
        int x = q.front();
        for(int v : lol[x]) {
            if(c[v] == 0 && v != vv) {
                c[v] = c[x] + 1;
                q.push(v);
            }
                
        }

        q.pop();
    }

    for(int i = 1; i < varfuri + 1; i++)
        if(c[i] == 0 && i != vv) {
            o << "-1" << ' ';
        } else {
            o << c[i] << ' ';
        }
}

int main() {
    int n, m, s;

    f >> n >> m >> s;

    std::vector<int> t[n + 1];

    int x, y;

    for(int i = 0; i < m; i++) {
        f >> x >> y;
        if(x != y)
            t[x].push_back(y);
    }

    bfs(t, s, n);
}