Pagini recente » Cod sursa (job #1372572) | Cod sursa (job #1253615) | Cod sursa (job #1646613) | Cod sursa (job #3134618) | Cod sursa (job #556536)
Cod sursa(job #556536)
#include <cstdio>
#define MaxN 100010
struct nod{
int inf;
nod *urm;}*L[MaxN];
int N,M,S,d[MaxN];
void add(int x,int y)
{
nod *q=new nod;
q->inf=y;
q->urm=L[x];
L[x]=q;
}
void cit()
{
int i,x,y;
scanf("%d%d%d",&N,&M,&S);
for(i=1;i<=M;i++)
{
scanf("%d%d",&x,&y);
add(x,y);
}
}
void bfs()
{
int p,u,st[MaxN];
nod *q=new nod;
p=u=1;
st[p]=S;
while(p<=u)
{
for(q=L[st[p]];q;q=q->urm)
if(!d[q->inf]&&q->inf!=S)
{
u++;
st[u]=q->inf;
d[q->inf]=d[st[p]]+1;
}
p++;
}
for(int i=1;i<=N;i++)
if(d[i]==0&&i!=S)
printf("-1 ");
else
printf("%d ",d[i]);
printf("\n");
}
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
cit();
bfs();
fclose(stdin);
fclose(stdout);
return 0;
}