Pagini recente » Cod sursa (job #1765625) | Cod sursa (job #3192099) | Cod sursa (job #2116631) | Cod sursa (job #2802906) | Cod sursa (job #272367)
Cod sursa(job #272367)
#include<stdio.h>
struct nod {int inf; nod *urm;} *v[100111];
int lg[100111],c[100111],n,m,i,x,u,y,rad;
void bfs(){
nod *q;
int p = u = 1;
c[p] = rad;
lg[rad] = 0;
while(p <= u){
for(q = v[c[p]]; q!=NULL; q = q->urm){
if( lg[ q->inf ] == -1 ){
lg[ q->inf ] = lg[ c[p] ] + 1;
u++;
c[u] = q->inf;
}
}
p++;
}
}
void add(int x, int y){
nod *p = new nod;
p->inf = y;
p->urm = v[x];
v[x] = p;
}
int main(){
FILE *f = fopen("bfs.in","r");
FILE *g = fopen("bfs.out","w");
fscanf(f,"%d %d %d",&n,&m,&rad);
for(i=1; i<=m; i++){
fscanf(f,"%d %d",&x,&y);
add(x,y);
}
for(i=1; i<=n; i++)
lg[i] = -1;
bfs();
for(i=1; i<=n; i++)
fprintf(g,"%d ",lg[i]);
fclose(f);
fclose(g);
return 0;
}