Pagini recente » Cod sursa (job #1774259) | Cod sursa (job #2229619) | Cod sursa (job #2235488) | Cod sursa (job #2354028) | Cod sursa (job #288066)
Cod sursa(job #288066)
# include <stdio.h>
# include<string.h>
struct lista{
int inf;
lista *adr;
};
lista *v[100010];
int i,x,y,m,start,n,cost[100010],s[100010];
void adauga(int i, int j){
lista *c=new lista;
c->inf=j;
c->adr=v[i];
v[i]=c;
}
void bfs(int x){
int i,L;
lista *p;
memset(cost,-1,sizeof(cost));
L=1;
s[L]=x; cost[x]=0;
for(i=1;i<=L;i++)
for(p=v[s[i]];p;p=p->adr)
if(cost[p->inf]==-1){
s[++L]=p->inf;
cost[s[L]]=cost[s[i]]+1;
}
}
int main(){
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&start);
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
adauga(x,y);
}
bfs(start);
for(i=1;i<=n;i++)
printf("%d ",cost[i]);
return 0;
}