Pagini recente » Cod sursa (job #2455807) | Cod sursa (job #1119220) | Cod sursa (job #1563306) | Cod sursa (job #2455595) | Cod sursa (job #815715)
Cod sursa(job #815715)
#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;
}