Cod sursa(job #3248992)

Utilizator hiken056Stefan Rusu hiken056 Data 14 octombrie 2024 11:49:21
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAXN = 1e5 + 5;
int N, M, X;
vector <int> G[MAXN];
int path[MAXN];
queue <int> Q;

void bfs ( int root ) {
    Q.push(root);
    while ( !Q.empty() ) {
        int node = Q.front();
        Q.pop();
        for ( auto vecin : G[node ] ) {
            if ( path[vecin] == -1) {
                path[vecin] = path[node] + 1;
                Q.push(vecin);
                //fout << vecin << " ";
            }
        }
    }
}

int main()
{
    fin >> N >> M >> X;
    while ( M -- ) {
        int x, y;
        fin  >> x >> y;
        G[x].push_back(y);
    }
    for ( int i = 1; i <= N; ++ i ) {
        path[i] = -1;
    }
    path[X] = 0;
    bfs(X);
    for (int i = 1; i <= N; ++ i ) {
        fout << path[i] << " ";
    }
    return 0;
}