Cod sursa(job #2714253)

Utilizator EusebiudistrugatorulLionel Messi Eusebiudistrugatorul Data 1 martie 2021 16:18:25
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
vector <int> v[100001], length(100001, -1), c(100001);
vector <bool> visited(100001, false);

void BFS() {
    int st = 0, dr = 1;
    while (st < dr) {
        int node = c[st++];
        visited[node] = true;
        for (int i = 0; i < v[node].size(); ++i) {
            if (!visited[v[node][i]]) {
                c[dr++] = v[node][i];
                visited[v[node][i]] = true;
                length[v[node][i]] = length[node] + 1;
            }
        }
    }
}

int main() {
    int n, m, s;
    fin >> n >> m >> s;
    while(m--) {
        int node_1, node_2;
        fin >> node_1 >> node_2;
        v[node_1].push_back(node_2);
    }
    c[0] = s, length[s] = 0;
    BFS();
    for (int i = 1; i <= n; ++i) {
        fout << length[i] << ' ';
    }
    return 0;
}