Pagini recente » Cod sursa (job #2145283) | Cod sursa (job #3143351) | Cod sursa (job #874269) | Cod sursa (job #2343442) | Cod sursa (job #870055)
Cod sursa(job #870055)
#include<stdio.h>
int n,m,start[100002], t[2][1000002];
int s,x,y,i,j;
int coada[100002];
int viz[100002],pr,ul;
int main(){
freopen("bfs.in","rt",stdin);
freopen("bfs.out","wt",stdout);
scanf("%d%d%d",&n,&m,&s);
for (i=1;i<=n;i++){
start[i]=0;
viz[i]=0;
}
j=0;
for (i=1;i<=m;i++){
scanf("%d%d",&x,&y);
j++;
t[0][j]=y;
t[1][j]=start[x];
start[x]=j;
}
coada[1]=s;
pr=1;
ul=1;
viz[s]=1;
while(pr<=ul){
x=coada[pr];
for(j=start[x];j!=0;j=t[1][j]){
y=t[0][j];
if(viz[y]==0){
ul++;
coada[ul]=y;
viz[y]=1+viz[x];
}
}
pr++;
}
for (i=1;i<=n;i++){
printf("%d ",viz[i]-1);
}
fclose(stdin);
fclose(stdout);
return 0;
}