Cod sursa(job #2792761)

Utilizator TghicaGhica Tudor Tghica Data 2 noiembrie 2021 11:55:49
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

queue<int>d;

int mn[100001];

vector<int>v[100001];

int main() {
    ifstream cin("bfs.in");
    ofstream cout("bfs.out");
    int n, m, s, i, a, b, c;
    cin>>n;
    cin>>m;
    cin>>s;
    for( i = 1; i <= n; i++ ) {
        mn[i] = 2100000000;
    }
    mn[s] = 0;
    for( i = 1; i <= m; i++ ) {
        cin>>a>>b;
        if( a != b )
            v[a].push_back( b );
    }
    d.push( s );
    while( !d.empty() ) {
        a  = d.front();
        d.pop();
        for( i = 0; i < v[a].size(); i++ ) {
            b = v[a][i];
            if( mn[a] + 1 < mn[v[a][i]] ) {
                mn[v[a][i]] = mn[a] + 1;
                d.push( v[a][i] );
            }
        }
    }
    for( i = 1; i <= n; i++ ) {
        if( mn[i] == 2100000000 )
            mn[i] = -1;
        cout<<mn[i]<<" ";
    }
    return 0;
}