Cod sursa(job #1922834)

Utilizator felipeGFilipGherman felipeG Data 10 martie 2017 19:09:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <list>
#define Nmax 100001
using namespace std;

ifstream f ("bfs.in");
ofstream g ("bfs.out");

int n, m, coada[ Nmax ], ans[ Nmax ], j, in, sf;
list < int > graph[ Nmax ];

int main()
{
    int x, y;

    f >> n >> m >> j;

    for ( int i = 1; i <= n; ++ i )
        ans[ i ] = -1;

    for ( int i = 1; i <= m; ++ i )
    {
        f >> x >> y;
        graph[ x ].push_back( y );
    }

    ans[ j ] = 0;
    coada[ 1 ] = j;
    in = sf = 1;

    while ( in <= sf )
    {
        for ( list < int > :: iterator it = graph[ coada[ in ] ].begin(); it != graph[ coada[ in ] ].end(); ++ it )
        {
            if ( ans[ *it ] == -1 )
            {
                ans[ *it ] = ans[ coada[ in ] ] + 1;
                coada[ ++sf ] = *it;
            }
        }
        in ++;
    }

    for ( int i = 1; i <= n; ++ i )
        g << ans[ i ] << " ";

    return 0;
}