Pagini recente » Cod sursa (job #1459315) | Cod sursa (job #2205011) | Cod sursa (job #2391765) | Cod sursa (job #921711) | Cod sursa (job #419882)
Cod sursa(job #419882)
// bfs - parcurgerea in latime
#include<fstream.h>
#include<stdlib.h>
long n,m,s, *c, *v[100001],*niv,*viz,x,y,st,dr,i;
int main()
{
ifstream f("bfs.in");
ofstream g("bfs.out");
f>>n>>m>>s;
c=(long *)calloc((n+1),sizeof(long));
niv=(long *)calloc((n+1),sizeof(long));
viz=(long *)calloc((n+1),sizeof(long));
for(i=1;i<=n;i++)
{
v[i]=(long *)calloc(1,sizeof(long));
niv[i]=-1;
}
for(i=1;i<=m;i++)
{
f>>x>>y;
v[x][0]++;
v[x]=(long *)realloc(v[x],(v[x][0]+1)*sizeof(long));
v[x][v[x][0]]=y;
}
c[0]=s;
niv[s]=0;
viz[s]=1;
st=0;
dr=0;
while(st<=dr)
{
for(i=1;i<=v[c[st]][0];i++)
if(!viz[v[c[st]][i]])
{
dr++;
c[dr]=v[c[st]][i];
niv[c[dr]]=niv[c[st]]+1;
}
st++;
}
for(i=1;i<=n;i++)
g<<niv[i]<<' ';
g<<'\n';
f.close();
g.close();
return 0;
}