Pagini recente » Cod sursa (job #2387745) | Cod sursa (job #2949145) | Cod sursa (job #1244445) | Cod sursa (job #1760324) | Cod sursa (job #1757751)
#include <stdio.h>
#include <stdlib.h>
typedef struct list
{
int x;
list * next;
} list;
list * g[100009],*p;
int n,m,t[100009],ul,pr,sol[100009],s,x,y;
char use[100009];
void add(list ** l,int x)
{
p=(list *)malloc(sizeof(list));
p->x=x;
p->next=*l;
*l=p;
}
int main(int argc, char const *argv[])
{
freopen("bfs.in","r",stdin);
freopen("bfs.out","w",stdout);
scanf("%d%d%d",&n,&m,&s);
while (m--)
{
scanf("%d%d",&x,&y);
add(&g[x],y);
}
t[0]=s;
use[s]=1;
while (pr<=ul)
{
for (p=g[t[pr++]]; p ;p=p->next)
if (use[p->x]==0)
{
use[p->x]=1;
t[++ul]=p->x;
sol[p->x]=sol[t[pr-1]]+1;
}
}
for (int i=1;i<=n;++i)
if (use[i]==0)
printf("-1 "); else
printf("%d ",sol[i]);
return 0;
}