Pagini recente » Cod sursa (job #2586070) | Cod sursa (job #952461) | Cod sursa (job #2976045) | Cod sursa (job #447411) | Cod sursa (job #2308182)
#include <cstdio>
#include <cstdlib>
using namespace std;
int n,m;
int *g[100000],deg[100000],a,b,x,y,d[100000],c;char u[100000];;
int bfs()
{int q[100000],p1,p2,*p;
u[q[p1=p2=0]=x]=1;
d[x]=0;
for(;p1<=p2;p1++)
for(p=g[q[p1]];*p!=-1;p++)
if(!u[*p]) {d[*p]=d[q[p1]]+1;u[q[++p2]=*p]=1;
}
}
int main()
{
freopen ("bfs.in","r",stdin);
freopen ("bfs.out","w",stdout);
scanf("%d %d %d",&n,&m,&x);
for(;m;m--)
{scanf("%d %d ",&a,&b);
a--;deg[a]++;}
for (int i = 0; i < n; i++)
{
g[i] = (int *) malloc((deg[i]+1)*sizeof(int));
g[i][deg[i]] = -1;
deg[i] = 0;
}
fseek(stdin,0,SEEK_SET);
scanf("%d %d %d ",&n,&m,&x); x--;
for(;m;m--)
{scanf("%d %d",&a,&b); a--;b--;
g[a][deg[a]++]=b;
}
bfs();
for(int i=0;i<n;i++) { if(d[i]==0 && x!=i) d[i]=-1;
printf("%d ",d[i]);
}
return 0;
}