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