Pagini recente » Cod sursa (job #859371) | Cod sursa (job #1596915) | Cod sursa (job #591495) | Cod sursa (job #2447796) | Cod sursa (job #251355)
Cod sursa(job #251355)
#include<cstdio>
struct point{
long inf;
point *leg;
}*lista[100000],*p;
long n,m,x,y,s,i,ok[100000],niv[100000];
void bfs(long x,long nivel){
point *p;
ok[x]=1;niv[x]=nivel;
for(p=lista[x];p!=0;p=p->leg)
if(ok[p->inf]==0)bfs(p->inf,nivel+1);
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld%ld%ld",&n,&m,&s);
for(i=0;i<m;i++){
scanf("%ld%ld",&x,&y);
p=new point;
p->inf=y;
p->leg=lista[x];
lista[x]=p;
}
bfs(s,0);
/*for(i=1;i<=n;i++){
for(p=lista[i];p!=0;p=p->leg)
printf("%ld ",p->inf);
printf("\n");
}*/
for(i=1;i<=n;i++)
if(niv[i]!=0)printf("%ld ",niv[i]);
else if(i!=s)printf("-1 ");
else printf("0 ");
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;
}