Cod sursa(job #815715)

Utilizator sortOfsortOf sortOf Data 17 noiembrie 2012 11:38:54
Problema BFS - Parcurgere in latime Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <cstring>
#define NMAX 100001

using namespace std;

ifstream fin("bfs.in");
ofstream fout("bfs.out");

int N, M, S;
int U[NMAX], C[NMAX], L[NMAX];

struct list {
    int info;
    list *next;
} *G[NMAX];

void add(int a, int b) {
    list *q = new list;
    q->info = b;
    q->next = G[a];
    G[a] = q;
}

void dfs() {
    int st, dr;
    list *p;
    memset(L, -1, sizeof(L));
    st = dr = 1;
    for(C[st] = S, U[S] = 1, L[S] = 0; st <= dr; ++ st) {
        for(p = G[C[st]]; p; p = p->next)
            if(!U[p->info]) {
                C[++ dr] = p->info;
                L[p->info] = L[C[st]] + 1;
                U[p->info] = 1;
            }
    }
}

int main() {
    int i, a, b;
    fin >> N >> M >> S;
    for(i = 1; i <= M; ++ i) {
        fin >> a >> b;
        add(a, b);
    }
    dfs();
    for(i = 1; i <= N; ++ i)
        fout << L[i] << ' ';
    fout << '\n';
    return 0;
}