Pagini recente » Cod sursa (job #1320810) | Cod sursa (job #948298) | Cod sursa (job #1436891) | Cod sursa (job #2437111) | Cod sursa (job #588210)
Cod sursa(job #588210)
#include<fstream.h>
#define N 100001
#define M 1000001
int main()
{long n,m,s,k,i,j,d[N],c[N]={0},p=0,u=0,q[10*M],a[M],b[M],*g[N],deg[N]={0};
ifstream f("bfs.in");
ofstream h("bfs.out");
f>>n>>m>>s;
for(k=1;k<=m;k++)
{f>>a[k]>>b[k];
deg[a[k]]++;}
for(i=1;i<=n;deg[i++]=0)
{d[i]=N;
g[i]=(long*)malloc(deg[i]*sizeof(long));}
for(j=1;j<=m;j++)
g[a[j]][deg[a[j]]++]=b[j];
c[s]=1;
d[s]=0;
q[u++]=s;
while(p!=u)
{i=q[p++];
for(k=0;k<deg[i];k++)
if(!c[g[i][k]])
d[g[i][k]]=d[i]+1,c[g[i][k]]=1,q[u++]=g[i][k];}
for(i=1;i<=n;i++)
if(d[i]==N)
h<<"-1 ";
else
h<<d[i]<<" ";
f.close();
h.close();
return 0;}