Pagini recente » Cod sursa (job #1235441) | Cod sursa (job #1296998) | Cod sursa (job #1780208) | Cod sursa (job #1381335) | Cod sursa (job #263329)
Cod sursa(job #263329)
#include<fstream.h>
#define xn 100001
#define xm 1000001
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct lista{ int nod; lista *urm;} *g[xn];
int m,n,s,t[xn],q[xn];
int drum(int i)
{
if(t[i]==-1)
return -1;
else
if(t[i])
{
return 1+drum(t[i]);
}
else
return 0;
}
int main()
{
memset(t,-1,sizeof(t));
fin>>n>>m>>s;
lista *p;
int x,y,i,nod,li,ls;
for(i=1;i<=m;i++)
{
fin>>x>>y;
p=new lista;
p->nod=y;
p->urm=g[x];
g[x]=p;
}
li=ls=1;
q[li]=s;
t[s]=0;
for(;li<=ls;li++)
{
nod=q[li];
for(p=g[nod];p;p=p->urm)
if(t[p->nod]==-1)
{
q[++ls]=p->nod;
t[p->nod]=nod;
}
}
for(i=1;i<=n;i++)
fout<<drum(i)<<' ';
fout<<'\n';
fout.close();
return 0;
}