Pagini recente » Cod sursa (job #285067) | Cod sursa (job #367715)
Cod sursa(job #367715)
#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];
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(d[ant]+1<d[p->el] && d[p->el]==dim)
{
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();
for( i=1;i<=n;i++)
d[i]=dim;
d[s]=0;
solve();
for(i=1;i<=n;i++)
{
if(d[i]==dim)
printf("-1 ");
else
printf("%d ",d[i]);
}
printf("\n");
return 0;
}