Cod sursa(job #2671964)

Utilizator antonioganea3Antonio Ganea antonioganea3 Data 12 noiembrie 2020 21:30:42
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;

#define MAXN 100005

vector<int> links[MAXN];
int N, M, X;

int dist[MAXN];

bool visited[MAXN];

int aux[MAXN];

queue<int> q;

int bfs(){

    //memset(dist,-1,N+1);
    for ( int i = 0; i <= N; i++ ){
        dist[i] = -1;
    }
    q.push(X);

    visited[X] = true;
    dist[X] = 0;

    int current;


    while ( !q.empty() ){
        current = q.front();

        for ( auto &x : links[current] ){
            if ( !visited[x] ){
                q.push(x);
                dist[x] = dist[current] + 1;
                visited[x] = true;
            }
        }

        q.pop();
    }
}


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

    fin >> N >> M >> X;

    int a, b;
    for ( int i = 0; i < M; i++ ){
        fin >> a >> b;

        links[a].push_back(b);
    }

    bfs();

    for ( int i = 1; i <= N; i++ ){
        fout << dist[i] << ' ';
    }

    return 0;
}