Cod sursa(job #2628680)

Utilizator robeert.77Chirica Robert robeert.77 Data 16 iunie 2020 22:57:33
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include <vector>
using namespace std;

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

vector <int> graph[100001];
vector <int> dist;
int tail[100001];

void bfs(int node, int n) {
    int first = 0, last = 0;
    tail[0] = node;
    dist[node] = 0;

    while (first <= last) {
        for (vector <int> :: iterator it = graph[tail[first]].begin(); it != graph[tail[first]].end(); it++)
            if (dist[*it] == -1) {
                tail[++last] = *it;
                dist[*it] = dist[tail[first]] + 1;
            }
        first++;
    }
}

int main() {
    int n, m, node;
    fin >> n >> m >> node;

    for (int i = 0; i < m; i++) {
        int x, y;
        fin >> x >> y;
        graph[x].push_back(y);
    }

    dist.assign(n + 1, -1);
    bfs(node, n);

    for (vector <int> :: iterator it = dist.begin() + 1; it != dist.end(); it++)
        fout << *it << " ";

    return 0;
}