Pagini recente » Cod sursa (job #49124) | Cod sursa (job #1314284) | Cod sursa (job #2944512) | Cod sursa (job #3151519) | Cod sursa (job #1906648)
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct el{int nod; int urm;};
el a[1000001];
struct parc{int nod; int poz;};
parc v[100001];
int l[100001],n,m,i,j,k,nd,viz[100001],x,y,s;
void ad(int x, int y)
{
k++;
a[k].nod=y;
a[k].urm=l[x];
l[x]=k;
}
void parc(int nod)
{
viz[nod]=1;
v[1].nod=nod;
v[1].poz=0;
int in=1,sf=1;
while(in<=sf)
{
int poz=l[v[in].nod];
while(poz)
{
if(viz[a[poz].nod]==0)
{
sf++;
v[sf].nod=a[poz].nod;
v[sf].poz=v[in].poz+1;
viz[a[poz].nod]=1;
}
poz=a[poz].urm;
}
in++;
}
for(i=1;i<=sf;i++)
viz[v[i].nod]=v[i].poz;
viz[nod]=0;
for(i=1;i<nod;i++)
if(viz[i]!=0)
g<<viz[i]<<" ";
else
g<<-1<<" ";
g<<0<<" ";
for(i=nod+1;i<=n;i++)
if(viz[i]!=0)
g<<viz[i]<<" ";
else
g<<"-1 ";
}
int main()
{
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
ad(x,y);
}
parc(s);
return 0;
}