Pagini recente » Clasament wellcodesimulareoni22 | Istoria paginii runda/oji2007_clasele_11-12 | Istoria paginii runda/boji_round2 | Rating temporar (temporar) | Cod sursa (job #881682)
Cod sursa(job #881682)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
long n,r;
long long m;
int c[100000];
int viz[100000];
struct nod {
int j;
nod *urm;
};
nod *g[100000];
void cit()
{
int i,j;
nod *p;
fin>>n>>m>>r;
while(fin>>i>>j)
{
p=new nod;
p->j=j;
p->urm=g[i];
g[i]=p;
}
fin.close();
}
void tipar ()
{int i;
nod *p;
for(i=1;i<=n;i++)
{
fout<<i<<" ";
p=g[i];
while(p)
{
fout<<p->j<<" ";
p=p->urm;
}
fout<<'\n';
}
}
void bf(int r)
{
int p,u,vf;
c[1]=r;
p=u=1;
nod *d;
viz[r]=1;
while(p<=u)
{
vf=c[p];
d=new nod;
d=g[vf];
while(d)
{
if(viz[d->j]==0)
{
u++;
c[u]=d->j;
viz[d->j]=viz[vf]+1;
}
d=d->urm;
}
p++;
}
}
int main()
{
cit();
bf(2);
int i;
for(i=1;i<=n;i++)
{
if(i==r) fout<<0<<" ";
else
if(viz[i]==0)
fout<<-1<<" ";
else
fout<<viz[i]<<" ";
}
return 0;
}