Cod sursa(job #3252816)

Utilizator LORDENVraja Luca LORDEN Data 31 octombrie 2024 11:47:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std ;

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

int n, m, s, d[100005] ;
vector < int > v[100005] ;
bool visited[100005] ;
queue < int > q ;

void bfs (int node)
{

    d[node] = 0 ;
    q.push (node) ;
    visited[node] = true ;

    while (!q.empty())
    {

        int x = q.front() ;
        q.pop() ;

        for (auto item : v[x])
            if (!visited[item])
                d[item] = d[x] + 1, q.push (item), visited[item] = true ;

    }

}

int main()
{

    int x, y ;

    cin >> n >> m >> s ;

    for (int i = 1 ; i <= m ; i ++)
        cin >> x >> y, v[x].push_back (y) ;

    bfs (s) ;

    for (int i = 1 ; i <= n ; i ++)
    {

        if (i == s || d[i])
            cout << d[i] << ' ' ;

        else
            cout << -1 << ' ' ;

    }

    return 0 ;

}