Cod sursa(job #2455891)

Utilizator Dragos1226Dragos Chileban Dragos1226 Data 12 septembrie 2019 22:50:32
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
#define NMAX 100005

vector <int> v[NMAX];
queue <int> q;

int N, M, s, dis[NMAX];

void BFS () {
    q.push(s);

    dis[s] = 0;

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

        for (int i = 0; i < v[node].size(); i++) {
            int vecin = v[node][i];

            if (dis[node]+1 < dis[vecin]) {
                dis[vecin] = dis[node] + 1;
                q.push(vecin);
            }
        }
        q.pop();
    }
}

int main() {
    for (int i = 0; i <= 100005; i++)
        dis[i] = INT_MAX;
    in >> N >> M >> s;
    int x, y;
    for (int i = 0; i < M; i++) {
        in >> x >> y;
        v[x].push_back(y);
    }

    BFS();

    for (int i = 1; i <= N; i++)
        if (dis[i] != INT_MAX)
            out << dis[i] << " ";
        else
            out << -1 << " ";



}