Cod sursa(job #1930581)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 19 martie 2017 01:40:55
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
# include <bits/stdc++.h>

using namespace std;

const int Nmax = 1e5 + 5;

int n, m, S, i, x, y, lg[Nmax];
bool ap[Nmax];
queue <int> Q;
vector <int> G[Nmax];

void bfs()
{
    ap[S] = true, lg[S] = 1, Q.push(S);

    while (Q.size())
    {
        x = Q.front();
        for (auto &it: G[x])
        {
            if (!ap[it]) lg[it] = lg[x] + 1, Q.push(it);
            ap[it] = true;
        }

        Q.pop();
    }
}

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

    scanf("%d %d %d\n", &n, &m, &S);

    for (i = 1; i <= m; ++i)
    {
        scanf("%d %d\n", &x, &y);
        G[x].push_back(y);
    }

    bfs();

    for (i = 1; i <= n; ++i)
        printf("%d ", lg[i] - 1);

    return 0;
}