Pagini recente » Cod sursa (job #2747243) | Cod sursa (job #1661910) | Cod sursa (job #1970611) | Cod sursa (job #1152405) | Cod sursa (job #413806)
Cod sursa(job #413806)
#include<stdio.h>
int a[1000][1000],viz[1000],n,m,s,x,y,i,c[100000],u,p,ip,d[1000];
int main(){
FILE*f=fopen("bfs.in","r");
FILE*g=fopen("bfs.out","w");
fscanf(f,"%d %d %d",&n,&m,&s);
for(i=1;i<=m;i++){
fscanf(f,"%d %d",&x,&y);
a[x][y]=1;
}
for(i=1;i<=n;i++){
if(a[s][i]==1){
c[++u]=i;
viz[i]=1;
d[i]=1;
}
}
d[s]=0;
p=1;
while(p<=u){
ip=c[p];
for(i=1;i<=n;i++){
if(a[ip][i]==1 && viz[i]==0){
c[++u]=i;
viz[i]=1;
d[i]=d[ip]+1;
}
}
p++;
}
for(i=1;i<=n;i++){
if(d[i]==0 && i!=s)
fprintf(g,"-1 ");
else
fprintf(g,"%d ",d[i]);
}
fclose(f);
fclose(g);
return 0;
}