Cod sursa(job #2258996)

Utilizator AdiMunteanAdrian Muntean AdiMuntean Data 12 octombrie 2018 19:48:52
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define NMAX 100100

int N, M, Start, L;
vector<int> X[NMAX];
int C[NMAX], S[NMAX], G[NMAX];

void BFS(int nodc)
{
    int i, j;

    for(int i = 1; i <= N; i++)
        C[i] = -1;

    L = 1;
    S[L] = nodc;
    C[nodc] = 0;

    for(i = 1; i <= L; ++i)
        for(j = 1; j < G[S[i]]; ++j)
            if(C[X[S[i]][j]] == -1) {
                L++;
                S[L] = X[S[i]][j];
                C[S[L]] = C[S[i]] + 1;
            }

}

int main()
{
    freopen("bfs.in", "r", stdin);
    freopen("bfs.out", "w", stdout);
    int i, x, y;
    scanf("%d %d %d", &N, &M, &Start);
    for(i = 1; i <= M; ++i) {
        scanf("%d %d", &x, &y);
        X[x].push_back(y);
    }

    BFS(Start);

    for(i = 1; i <= N; ++i)
        printf("%d ", C[i]);
    printf("\n");
    return 0;
}