Pagini recente » Cod sursa (job #125819) | Cod sursa (job #973798) | Cod sursa (job #910344) | Cod sursa (job #786548) | Cod sursa (job #276500)
Cod sursa(job #276500)
#include<stdio.h>
struct nod{ int x;
nod *next;
};
nod *v[100010];
long n,m,X;
long s[100010],c[100010],t[100010],pus[100010];
void citire()
{ freopen("bfs.in","r",stdin);
scanf("%ld %ld %ld",&n,&m,&X);
long a,b;
nod *p;
for(long i=1;i<=m;i++)
{ scanf("%ld %ld",&a,&b);
p=new nod;
p->x = b;
p->next = v[a];
v[a] = p;
}
}
void bf(long k)
{ long i=1;
long j=1;
c[i]=k;
pus[k]=1;
t[k]=-1;
nod *p;
while(i<=j)
{ p=v[c[i]];
while (p!=NULL)
{ if (pus[p->x]==0)
{ j++;
pus[p->x]=1;
c[j] = p->x;
t[c[j]]=c[i];
s[p->x] = s[t[c[j]]]+1;
}
p = p->next;
}
i++;
}
}
int main()
{ citire();
bf(X);
freopen("bfs.out","w",stdout);
for(long i=1;i<=n;i++)
{ if(i==X) s[i]=0;
if(i!=X && s[i]==0) s[i]=-1;
printf("%d ",s[i]);
}
printf("\n");
return 0;
}