Pagini recente » Cod sursa (job #1291850) | Cod sursa (job #2529611) | Cod sursa (job #2345048) | Cod sursa (job #2099945) | Cod sursa (job #907753)
Cod sursa(job #907753)
#include<cstdio>
struct gr{
long int nr;
long int vec[100];
}a[100005];
long int v[100105],viz[100005],n,m,i,p,u,x,y,s;
void bf()
{
while(p<=u){
for(i=1;i<=a[v[p]].nr;i++)
if(viz[a[v[p]].vec[i]]==0){
u++;
v[u]=a[v[p]].vec[i];
viz[v[u]]=viz[v[p]]+1;
}
p++;
}
}
void citire()
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%ld %ld %ld",&n,&m,&s);
for(i=1;i<=m;i++){
scanf("%ld %ld",&x,&y);
a[x].nr++;
a[x].vec[a[x].nr]=y;
}
p++;u++;
v[p]=s;
viz[s]=1;
}
void afisare()
{
for(i=1;i<=n;i++)
if(viz[i]==0 && i!=s)printf("-1 ");
else printf("%ld ",viz[i]-1);
}
int main()
{
citire();
bf();
afisare();
return 0;
}