Pagini recente » Cod sursa (job #1310044) | Cod sursa (job #1130336) | Cod sursa (job #812532) | Cod sursa (job #2597136) | Cod sursa (job #614819)
Cod sursa(job #614819)
#include<stdio.h>
int n,m,s;
struct Stiv{
int y;
struct Stiv*dir;
} *v[100001];
bool viz[100001];
int C[100001];
void push(int x,int y){
Stiv*b;
b=new Stiv;
b->y=y;
b->dir=v[x];
v[x]=b;
}
void bfs(){
viz[s]=1;
Stiv*a,*b,*c,*d;
a=new Stiv; a->y=s; a->dir=NULL; b=a;
while(a!=NULL){
c=v[a->y];
while(c!=NULL){
if(!viz[c->y]){
d=new Stiv; d->y=c->y; d->dir=NULL; b->dir=d; b=d;
C[d->y]=C[a->y]+1; };
d=c; c=c->dir; delete d;};
d=a; a=a->dir; delete d; };
}
int main(){
int i,x,y;
Stiv*b;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
push(x,y); };
parcurg();
for(i=1;i<=n;i++)
if(C[i]==0&&i!=s)printf("-1 "); else printf("%d ",C[i]);
}