Pagini recente » Cod sursa (job #1562392) | Profil M@2Te4i | Istoria paginii utilizator/laicdragos | Cod sursa (job #2034643) | Cod sursa (job #276446)
Cod sursa(job #276446)
#include<stdio.h>
struct nod { int v;
nod *next;
} *v[10000];
int n,m,cost[1000],t[1000],s[1000],pus[1000],ss;
void citire()
{ int i,x,y;
nod *nou;
freopen("bfs.in","r",stdin);
scanf("%d%d%d",&n,&m,&ss);
for(i=1;i<=m;i++)
{ scanf("%d%d",&x,&y);
nou=new nod;
nou->v=y;
nou->next=v[x];
v[x]=nou;
}
}
void bf(int nd)
{ int st=1,d=1,i;
t[nd]=-1;
s[d]=nd;
pus[nd]=1;
nod *p;
while(st<=d)
{ p=v[s[st]];
while(p!=NULL)
{ if(pus[p->v]==0)
{ pus[p->v]=1;
s[++d]=p->v;
t[s[d]]=s[st];
cost[s[d]]=cost[t[s[d]]]+1;
}
p=p->next;
}
st++;
}
for(i=1;i<=n;i++)
if(t[i]==0) cost[i]=-1;
}
int main()
{ freopen("bfs.out","w",stdout);
int i;
nod *p;
citire();
bf(ss);
for(i=1;i<=n;i++)
printf("%d ",cost[i]);
return 0;
}