Cod sursa(job #3368382)

Utilizator MrbgdBogdan Mrbgd Data 14 octombrie 2026 13:07:50
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.51 kb
#include <fstream>
#include <vector>
#include <bits/stdc++.h>
std::vector<std::vector<int>> graf;
std::bitset<100000>nod_folosit;

std::ifstream input_file("dfs.in");
std::ofstream output_file("dfs.out");


// dfs
// void dfs(int nod) {
//     nod_folosit[nod]=1;
//     for (int urmator:graf[nod]) {
//         if (!nod_folosit[urmator])
//             dfs(urmator);
//     }
// }
// int main() {
//     int n,m,x,y,no_componente_conexe=0;
//     input_file>>n>>m;
//
//     graf.assign(n+1,std::vector<int>());
//     for (int i=1;i<=m;i++) {
//         input_file>>x>>y;
//         graf[x].push_back(y);
//         graf[y].push_back(x);
//     }
//
//     for (int i=1;i<=n;i++) {
//         if (!nod_folosit[i]) {
//             no_componente_conexe++;
//             dfs(i);
//         }
//     }
//
//     output_file<<no_componente_conexe;
//     return 0;
// }

std::vector<int>dist;
void bfs(int nod) {
    std::queue<int>coada;
    coada.push(nod);
    dist[nod]=1;
    while (!coada.empty()) {
        nod=coada.front();
        coada.pop();
        for (int urmator:graf[nod]) {
            if (dist[nod]==0) {
                dist[urmator]=dist[nod]+1;
                coada.push(urmator);
            }
        }
    }
}

int main() {
    int n,m,k,x,y;
    input_file>>n>>m>>k;
    dist.assign(n+1,0);
    graf.assign(n+1,std::vector<int>());
    for (int i=1;i<=m;i++) {
        input_file>>x>>y;
        graf[x].push_back(y);
    }
    bfs(k);
    for (int i=1;i<=n;i++) {
        output_file<<dist[i]-1<<" ";
    }
    return 0;
}