Cod sursa(job #1922415)

Utilizator DysKodeTurturica Razvan DysKode Data 10 martie 2017 17:22:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

#define f first
#define s second

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

int i,j,n,m,ans[100010],x,y,in,sf,coada[100010];
list< int > G[ 100010 ];

int main()
{
    fin>>n>>m>>j;
    for( i = 1 ; i <= n ; i++ )
        ans[ i ] = -1;
    for( i = 1 ; i <= m ; i++ )
    {
        fin>>x>>y;
        G[ x ].push_back( y );
    }
    in = sf = 1;
    coada[ 1 ] = j;
    ans[ j ] = 0;
    while( in <= sf )
    {
        for( auto it : G[ coada[ in ] ] )
            if( ans[ it ] == -1 )
            {
                ans[ it ] = ans[ coada[ in ] ] + 1;
                coada[ ++sf ] = it;
            }
        ++in;
    }

    for( i = 1 ; i <= n ; i++ )
        fout<<ans[ i ]<<' ';

return 0;
}