Cod sursa(job #2666810)

Utilizator dariahazaparuHazaparu Daria dariahazaparu Data 2 noiembrie 2020 15:27:22
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
const int  N_MAX = 100005;

std :: vector<int> graph[N_MAX];
bool vis[N_MAX];
int n, m, src;
int dist[N_MAX];
std :: queue<int> bfs;

int main() {

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

    fin >> n >> m >> src;
    for (int i = 1; i <= m; ++i) {
        int a, b;
        fin >> a >> b;
        graph[a].push_back(b);
    }

    bfs.push(src);
    vis[src] = true;
    dist[src] = false;

    while(!bfs.empty()){
        int nd_src = bfs.front();
        bfs.pop();
        for (int i : graph[nd_src]) {
            if (!vis[i]) {
                bfs.push(i);
                vis[i] = true;
                dist[i] = dist[nd_src] + 1;
            }
        }
    }

    for (int i = 1; i <= n; ++i) {
        if (!vis[i])
            fout << "-1 ";
        else
            fout << dist[i] << " ";
    }

    return 0;
}