Pagini recente » Cod sursa (job #1662826) | Cod sursa (job #3181657) | Cod sursa (job #481769) | Cod sursa (job #1675739) | Cod sursa (job #367717)
Cod sursa(job #367717)
#include<stdio.h>
#define dim 100100
struct nod
{
int el;
nod *next;
} *liste[dim];
int n,s,y,x,st,dr,m;
int c[dim],viz[dim];
int d[dim];
void add(int x,int y)
{
nod *p=new nod;
p->el=y;
p->next=liste[x];
liste[x]=p;
}
void read()
{
scanf("%d%d%d",&n,&m,&s);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
add(x,y);
}
}
void solve()
{ nod *p = new nod ;
c[dr]=s;
dr++;
int ant=s;
while(dr>st)
{
ant=c[st];
p=liste[c[st]];
do
{
if(viz[p->el]==0)
{viz[p->el]=1;
d[p->el]=d[ant]+1;
c[dr++]=p->el;
}
p=p->next;
} while(p);
st++;
}
}
int main ()
{
int i;
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
read();
d[s]=0;
viz[s]=1;
solve();
for(i=1;i<=n;i++)
{
if(d[i]==0 && i!=s)
printf("-1 ");
else
printf("%d ",d[i]);
}
printf("\n");
return 0;
}