Pagini recente » Cod sursa (job #2941663) | Cod sursa (job #2038165) | Cod sursa (job #279699) | Cod sursa (job #1861054) | Cod sursa (job #457232)
Cod sursa(job #457232)
using namespace std;
#include <fstream>
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
int inf;
nod * urm;
}* vecini[100005];
int n,m,s,c[100005],t[100005];
void add(nod* & prim,int val)
{
nod *p;
p=new nod;
p->inf=val;
p->urm=prim;
prim=p;
}
void citire()
{int i,x,y;
fin>>n>>m>>s;
for (i=1;i<=m;i++)
{
fin>>x>>y;
add(vecini[x],y);
//add(vecini[y],x);
}
}
void bfs()
{int i=1,k=1;nod * p;
c[1]=s;viz[s]=1;
for(i=1;i<=k;i++)
for(p=vecini[c[i]];p;p=p->urm)
if (!viz[p->inf])
{c[++k]=p->inf;
t[p->inf]=c[i];
viz[p->inf]=1;}
}
int main()
{int i,j,nr;
citire();
bfs();
for(i=1;i<=n;i++)
if (t[i])
{
j=i;nr=0;
while(j)
{
nr++;j=t[j];
}
fout<<nr-1<<" ";
}
else
if (i==s)
fout<<"0 ";
else
fout<<"-1 ";
return 0;
}