Pagini recente » Cod sursa (job #848055) | Cod sursa (job #20317) | Cod sursa (job #26441) | Monitorul de evaluare | Cod sursa (job #401989)
Cod sursa(job #401989)
#include<stdio.h>
int n,m,s,c[200010],viz[100010],i,k,val,x,y;
struct nod
{
int inf;
nod *adr;
};
nod *l[100005],*p,*cn,*u;
int main()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&s);
for(i=0;i<m;i++)
{
scanf("%d %d",&x,&y);
cn=new nod;
cn->inf=y;
cn->adr=l[x];
l[x]=cn;
}
for(i=0;i<=n;i++)
viz[i]=-1;
k=1;
c[k]=s;
viz[s]=0;
c[++k]=-3;
val=1;
for(i=1;i<=k;i++)
{
if(c[i]==-3)val++;
else
{
u=l[c[i]];
while(u)
{
if(viz[u->inf]==-1)
{
viz[u->inf]=val;
c[++k]=u->inf;
}
u=u->adr;
}
c[++k]=-3;
}
}
for(i=1;i<=n;i++)
printf("%d ",viz[i]);
return 0;
}