Cod sursa(job #2566700)

Utilizator Teo_1101Mititelu Teodor Teo_1101 Data 2 martie 2020 23:37:01
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 100002;

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

int N, M, V;

vector < int > Ad[NMAX];
queue < int > Q;

int D[NMAX], x, y;

void BFS( int V )
{
    Q.push( V );

    while( Q.size() )
    {
        int nod = Q.front();
        Q.pop();

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

            if( !D[w] && w != V )
            {
                D[w] = D[nod]+1;
                Q.push( w );
            }
        }
    }

    for( int i = 1; i <= N; ++i )
        if( i != V && D[i] == 0 ) fout << -1 << ' ';
        else fout << D[i] << ' ';
}
void Read()
{
    fin >> N >> M >> V;

    for( int i = 1; i <= M; ++i )
    {
        fin >> x >> y;
        Ad[x].push_back( y );
        //Ad[y].push_back( x );
    }

    BFS( V );
}
int main()
{
    Read();
    return 0;
}