Cod sursa(job #1556470)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 24 decembrie 2015 22:27:44
Problema BFS - Parcurgere in latime Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <cstdio>
using namespace std;

const int dmax = 1000;

bool A[dmax+1][dmax+1];
int N, M, S;

int C[dmax+1];
int viz[dmax+1];

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

    int i, x, y;

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

    for(i = 1; i <= M; i++)
    {
        scanf("%d %d", &x, &y);

        A[x][y] = true;
    }

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

    int p, u;

    p = u = 1;

    //INSERAM NODUL S CU COSTUL 0
    C[1] = S; viz[S] = 0;

    while(p <= u)
    {
        x = C[p];

        for(i = 1; i <= N; i++)
            if(viz[i] == -1 && A[x][i] == true)
            {
                u++;
                C[u] = i;
                viz[i] = 1 + viz[x];
            }

        p++;
    }

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

    return 0;
}