Cod sursa(job #1705510)

Utilizator razvan3895Razvan-Mihai Chitu razvan3895 Data 20 mai 2016 18:31:09
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

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

int dist[100001];

int main() {
    int n, m, s;
    queue<int> q;

    in >> n >> m >> s;
    vector<vector<int> > edges(n + 1);

    for (int i = 0; i < m; ++i) {
        int x, y;

        in >> x >> y;

        edges[x].push_back(y);
    }

    q.push(s);
    dist[s] = 1;

    while (!q.empty()) {
        int u = q.front();

        q.pop();

        for (unsigned v = 0; v < edges[u].size(); ++v) {
            if (!dist[edges[u][v]]) {
                q.push(edges[u][v]);
                dist[edges[u][v]] = dist[u] + 1;
            }
        }
    }

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

    out << '\n';

    return 0;
}