Cod sursa(job #1223251)

Utilizator andreiiiiPopa Andrei andreiiii Data 25 august 2014 18:29:08
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <cstdio>
#include <queue>
#include <vector>

using namespace std;

const int Nmax = 100005;

vector<int> G[Nmax];
int Dist[Nmax];

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);

    int N, M, S;
    scanf("%d%d%d", &N, &M, &S);

    while (M--) {
        int x, y;
        scanf("%d%d", &x, &y);

        G[x].push_back(y);
    }

    Dist[S] = 1;
    queue<int> Q;

    for (Q.push(S); !Q.empty();) {
        const int node = Q.front();
        Q.pop();

        for (const int p: G[node]) {
            if (!Dist[p]) {
                Dist[p] = Dist[node] + 1;
                Q.push(p);
            }
        }
    }

    for (int i = 1; i <= N; ++i)
        printf("%d ", Dist[i] - 1);

    printf("\n");
}