Cod sursa(job #2683411)

Utilizator andrei_ersenErsen Andrei andrei_ersen Data 11 decembrie 2020 11:21:31
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <bits/stdc++.h>
#include <fstream>
#define pb push_back

using namespace std;

int const N_max = 1e5;
const int INF = 1e9;

int n , m , s;

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

int dist[1 + N_max]; /// dist[nod] = distanta minima de la sursa la nod

vector <int> a[N_max + 1];

void bfs( int sursa)
{
    for (int i = 1; i <= n; i++)
        dist[i] = INF;
    queue <int> coada;
    coada.push (sursa);
    dist[sursa] = 0;
    while (coada.size ()) {
        int nod = coada.front ();
        coada.pop ();
        for (int vec : a[nod])
            if (dist[vec] == INF ) {
                dist[vec] = dist[nod] + 1;
                coada.push (vec);
            }
    }
}
int main()
{
    in >> n >> m >> s;
    for ( int i = 1; i <= m ; i++ )
    {
         int x , y;
         in >> x >> y;
         a[x].pb(y);
    }
    bfs(s);
    for ( int i = 1; i <= n ; i++ )
    {
        if( dist[i] == INF)
            dist[i] = -1;
        out << dist[i] << " ";
    }
    return 0;
}