Cod sursa(job #2764724)

Utilizator NanuGrancea Alexandru Nanu Data 22 iulie 2021 13:10:00
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

#define DIM 100001

vector <int> v[DIM];
int n, m, nod, sel[DIM], x, y, dist[DIM];

static inline void bfs() {
    queue<int> q;
    sel[nod] = 1;
    q.push(nod);
    dist[nod] = 0;

    while(!q.empty()) {
        int k = q.front();
        q.pop();

        for(auto e : v[k])
            if(sel[e] == 0) {
                sel[e] = 1;
                dist[e] = dist[k] + 1;
                q.push(e);
            }
    }
}

int main() {
    cin >> n >> m >> nod;
    for(int i = 1; i <= m; i++) {
        cin >> x >> y;
        v[x].push_back(y);
    }

    for(int i = 1; i <= n; i++)
        dist[i] = -1;   ///marchez unde nu pot ajunge;

    bfs();
    for(int i = 1; i <= n; i++)
         cout << dist[i] << " ";

    return 0;
}