Cod sursa(job #3277339)

Utilizator StefanStratonStefan StefanStraton Data 15 februarie 2025 20:18:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <vector>

using namespace std;

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

int n, m, s;

vector <int> lista[100001];
vector <int> dist(100001, -1);
vector <int> coada(100001);
vector <bool> viz(100001);

void bfs(int nod){
    dist[nod] = 0;
    viz[nod] = 1;
    int inc = 1, sf = 1;
    coada[inc] = nod;
    while(inc <= sf){
        vector <int> :: iterator it;
        for(it = lista[coada[inc]].begin(); it != lista[coada[inc]].end(); it++){
            if(!viz[*it]){
                sf++;
                coada[sf] = *it;
                viz[*it] = 1;
                dist[*it] = dist[coada[inc]] + 1;
            }
        }
        inc++;
    }
}

int main()
{
    in >> n >> m >> s;

    for(int i = 1; i <= m; i++){
        int x, y; in >> x >> y;
        lista[x].push_back(y);
    }
    bfs(s);

    for(int i = 1; i <= n; i++){
        out << dist[i] << " ";
    }

    return 0;
}