Cod sursa(job #2230799)

Utilizator HumikoPostu Alexandru Humiko Data 11 august 2018 15:41:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <bits/stdc++.h>
#define oo 1e9
#define NMAX 100005

using namespace std;

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

int n, m, s;
int distance_from_S[NMAX];

vector <int> graph[NMAX];
queue <int> road;

void bfs (int node)
{
    road.push(node);
    distance_from_S[node] = 0;

    while ( road.size() )
    {
        int current_Node = road.front();
        road.pop();

        for ( auto x:graph[current_Node] )
        {
            if ( distance_from_S[x] == oo )
            {
                road.push(x);
                distance_from_S[x] = distance_from_S[current_Node]+1;
            }
        }
    }
}

int main()
{
    fin>>n>>m>>s;
    for ( int i = 1; i <= m; ++i )
    {
        int first_Node, second_Node;

        fin>>first_Node>>second_Node;
        graph[first_Node].push_back(second_Node);
    }

    for ( int i = 1; i <= n; ++i )
        distance_from_S[i] = oo;

    bfs(s);

    for ( int i = 1; i <= n; ++i )
    {
        if ( distance_from_S[i] != oo )
            fout<<distance_from_S[i]<<" ";
        else
            fout<<"-1"<<" ";
    }
}