Cod sursa(job #2567641)

Utilizator Turturica_DorinTurturica Dorin Turturica_Dorin Data 3 martie 2020 18:12:39
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <vector>
#include <queue>

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

queue< int >q;
vector< int >A[ 100005 ];
vector< int >:: iterator itt;

int C[ 100005 ], i, N, M, start, nodc, nodn, x, y;

void BFS( int nod )
{
    for( i = 1; i <= N; i++ )
    {
        C[ i ] = -1;
    }
    C[ nod ] = 0;
    q.push( nod );
    while( q.size() )
    {
        nodc = q.front();
        for ( auto it:A[ nodc ] )
        {
            nodn = it;
            if ( C[ nodn ] == -1 )
            {
                q.push( nodn );
                C[ nodn ] = C[ nodc ] + 1;
            }
        }
        q.pop();
    }
}

int main()
{
    fin >> N >> M >> start;
    for ( i = 1; i <= M; i++ )
    {
        fin >> x >> y;
        A[ x ].push_back( y );
    }
    BFS( start );
    for ( i = 1; i <= N; i++ )
    {
        fout<< C[ i ] << ' ';
    }
    /*fout<< '\n';
    for( itt = A[ 2 ].begin(); itt < A[ 2 ].end(); itt++ )
    {
        fout<< *itt << ' ';
    }*/
}