Cod sursa(job #2664246)

Utilizator Radu_FilipescuFilipescu Radu Radu_Filipescu Data 28 octombrie 2020 11:00:47
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 100005;

int N, M, S;
vector <int> Ad[NMAX];
int d[NMAX];
deque <int> Q;

void Read() {
    fin >> N >> M >> S;

    for( int i = 1; i <= M; ++i ) {
        int a, b;

        fin >> a >> b;

        Ad[a].push_back( b );
    }
}

void Do() {
    Q.push_back( S );
    d[S] = 1;

    while( !Q.empty() ) {
        int w, u = Q.front();
        Q.pop_front();

        for( int i = 0; i < Ad[u].size(); ++i ) {
            w = Ad[u][i];

            if( d[w] == 0 ) {
                d[w] = d[u] + 1;
                Q.push_back( w );
            }
        }
    }

    for( int i = 1; i <= N; ++i )
        fout << d[i] - 1 << ' ';
}

int main()
{
    Read();
    Do();

    return 0;
}