Pagini recente » Cod sursa (job #125973) | Cod sursa (job #1626649) | Cod sursa (job #659812) | Cod sursa (job #988875) | Cod sursa (job #397706)
Cod sursa(job #397706)
#include <fstream>
//using namespace std;
#define NOD 0
#define PARENT 1
int viz[100001],c[100001],st,dr,s,n,m,i,x,y,aj,g;
struct nod
{
int info;
nod *urm;
}*l[100001],*p;
void lantmin()
{
st=dr=1;
c[1]=s;
viz[s]=1;
nod *vf = l[s];
while (st<=dr)
{
while (vf!=0)
{
if (viz[vf->info]==0)
{
viz[vf->info]=viz[st]+1;
dr++;
c[dr]=vf->info;
}
vf=vf->urm;
}
st++;
vf=l[c[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 (x==2) fout<<0<<" ";
else if (viz[x]==0) fout<<-1<<" ";
else fout<<viz[x]<<" ";
}
fout<<endl;
return 0;
}