Cod sursa(job #2801595)

Utilizator calinstefan025Avramoniu Calin calinstefan025 Data 16 noiembrie 2021 17:10:56
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std ;

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

int n , m , s ;
vector<int>viz ;
vector<int>G[100005] ;
vector<int>d ;

void bfs(int nod , int cc) {
    queue<int>q ;
    q.push(nod) ;
    viz[nod] = cc ;
    d[nod] = 0 ;
    while(!q.empty()) {
        nod = q.front() ;
        q.pop() ;
        for(int j = 0 ; j < G[nod].size() ; j++) {
            int nod_viz = G[nod][j] ;
            if(viz[nod_viz] == 0) {
                viz[nod_viz] = cc ;
                d[nod_viz] = d[nod] + 1 ;
                q.push(nod_viz) ;
            }
        }
    }
}

int main() {
    int x , y ;

    fin >> n >> m >> s;
    for(int i = 1 ; i<=m ; i++) {
        fin >> x >> y ;
        G[x].push_back(y) ;
    }

    viz.assign(n+1 , 0) ;
    d.assign(n+1 , -1) ;

    bfs(s , 1) ;

    for(int i = 1 ;i<=n ;i++)
        fout << d[i] << " " ;

    return 0;
}