Pagini recente » Cod sursa (job #2137257) | Cod sursa (job #158856) | Cod sursa (job #1134507) | Cod sursa (job #2162364) | Cod sursa (job #397687)
Cod sursa(job #397687)
#include <fstream>
using namespace std;
#define NOD 0
#define PARENT 1
int viz[100001],c[2][100001],st,dr,s,n,m,i,x,y,aj,g;
struct nod
{
int info;
nod *urm;
}*l[20],*p;
void lantmin()
{
st=dr=1;
c[NOD][1]=s;
c[PARENT][1]=1;
viz[s]=1;
nod *vf = l[s];
while (st<=dr)
{
while (vf!=0)
{
if (viz[vf->info]==0)
{
viz[vf->info]=1;
dr++;
c[NOD][dr]=vf->info;
c[PARENT][dr]=st;
}
vf=vf->urm;
}
st++;
vf=l[c[NOD][st]];
}
}
int main()
{
ifstream f("bfs.in");
ofstream fout("bfs.out");
f>>n>>m>>s;
for (i=1;i<=m;i++)
{
f>>x>>y;
p = new nod;
p->info=y;
p->urm=l[x];
l[x]=p;
}
lantmin();
for (x=1;x<=n;x++)
{
for (i=1;i<=dr;i++)
{
aj=0;
g=0;
if (x==c[NOD][i])
{
aj=1;
while(c[PARENT][i]!=i)
{
i=c[PARENT][i];
g++;
}
i=dr+1;
}
}
if (aj==0) fout<<-1<<" ";
else fout<<g<<" ";
}
fout<<endl;
return 0;
}