Pagini recente » Cod sursa (job #586356) | Cod sursa (job #107861) | Rezultatele filtrării | Rezultatele filtrării | Cod sursa (job #530332)
Cod sursa(job #530332)
#include <iostream>
#include <math.h>
#define N 100005
using namespace std;
struct Nod {
int v;
Nod* next;
};
int n;
int que[N];
int viz[N];
int wh[N];
int printV[N];
int m;
int s;
int x,y;
Nod *gr[N];
void insert(Nod *&p, int vl) {
Nod* op = new Nod();
op->next = p;
op->v = vl;
p = op;
}
int bfs(int m) {
viz[s] = 1;
int h = 1;
int t = 1;
que[h] = m;
while (h <= t) {
for(Nod*it = gr[que[h]]; it != 0; it = it -> next)
if (!viz[it->v]) {
que[++t] = it->v;
wh[t] = wh[h] + 1;
viz[it->v]++;
}
h++;
}
for(int i = 1; i <= n; i++)
printV[i] = -1;
for(int i = 1; i <= t; i++)
printV[que[i]] = wh[i];
for(int i = 1; i <= n; i++)
printf("%d ",printV[i]);
}
int main() {
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&s);
for(int i = 1; i <= m; i++) {
scanf("%d %d",&x,&y);
insert(gr[x],y);
}
bfs(s);
}