Cod sursa(job #2986070)

Utilizator BiancaMMIVMariciuc Bianca BiancaMMIV Data 27 februarie 2023 17:58:07
Problema BFS - Parcurgere in latime Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

//ifstream f("file.in");
ifstream f("bfs.in");
ofstream g("bfs.out");

int n, m, X;
int d[101];

vector< int > G[1000];


void read() {
    f>>n>>m>>X;

    for(int i=1; i<=m; i++) {
        int x, y;
        f>>x>>y;
        G[x].push_back(y);
       // G[y].push_back(x);
    }
}

queue<int> coada;
bool verif[101];

void bfs(int nodStart) {

    for(int i=1; i<=n; i++) {
        d[i] = 10000000;
    }
    coada.push(nodStart);
    verif[nodStart] = true;
    d[nodStart] = 0;

    while(!coada.empty()) {
        
        int nodCurent = coada.front();
        coada.pop();
        //cout<<nodCurent<<" ";

        for(int i=0; i<G[nodCurent].size(); i++)  {

            if(!verif[G[nodCurent][i]]) {
                d[G[nodCurent][i]] = d[nodCurent] + 1;
                coada.push(G[nodCurent][i]);
                verif[G[nodCurent][i]] = true;
            }

        }
    }
}

void print() {

    for(int i=1; i<=n; i++)
        if(d[i] == 10000000)
            g<<-1<<" ";
        else 
            g<<d[i] <<" ";
}

int main() {

    read();
    bfs(X);
    print();
    
    return 0;
}