Cod sursa(job #2767238)

Utilizator dinuionirinel10@gmail.comDinu Ion Irinel [email protected] Data 5 august 2021 13:27:50
Problema BFS - Parcurgere in latime Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <list>
#include <queue>

const int NMAX = 100009;
std::list<int> adj[NMAX];
int visited[NMAX];
int distance[NMAX];

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


void bfs(int source) {
    visited[source] = 1;
    distance[source] = 0;

    std::queue<int> queue;
    queue.push(source);
    while (!queue.empty()) {
        int front = queue.front();
        queue.pop();
        for (auto it = adj[front].begin(); it != adj[front].end(); ++it) {
            if (!visited[*it]) {
                visited[*it] = 1;
                distance[*it] = distance[front] + 1;
                queue.push(*it);
            }
        }
    }
}

int main(void) {

    int n, m ,s;
    fin >> n >> m >> s;
    for (int i = 1; i <= m; ++i) {
        int u, v;
        fin >> u >> v;
        adj[u].push_back(v);
    }

   bfs(s);

    for (int i = 1; i <= n; ++i) {
        if (visited[i] == 0) {
            fout << -1 << " ";
        } else {
            fout << distance[i] << " ";
        }
    }

    fin.clear();
    fout.close();

    return 0;
}