Pagini recente » Cod sursa (job #2817921) | Cod sursa (job #875562) | Cod sursa (job #1911078) | Cod sursa (job #839547) | Cod sursa (job #280561)
Cod sursa(job #280561)
#include<fstream.h>
#define Nmax 100100
ifstream f("bfs.in");
ofstream g("bfs.out");
int s,n,m,viz[Nmax];
struct coada
{
int inf;
coada *urm;
}*c;
struct elem
{
int inf;
elem *urm;
}*a[Nmax];
void citire()
{
elem *p;
int x,y,i;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
p=new elem;
p->inf=y;
p->urm=a[x];
a[x]=p;
}
}
void program()
{
elem *p;
viz[s]=0;
coada *ultim,*q;
c=new coada;
viz[s]=0;
c->inf=s;
c->urm=NULL;
ultim=c;
while(c!=NULL)
{
p=a[c->inf];
while(p)
{
if(viz[p->inf]==0 && p->inf!=s)
{
viz[p->inf]=viz[c->inf]+1;
q=new coada;
q->inf=p->inf;
q->urm=NULL;
ultim->urm=q;
ultim=q;
}
p=p->urm;
}
c=c->urm;
}
}
void afisare()
{
for(long i=1;i<=n;i++)
{ if(viz[i]!=0 || i==s)
g<<viz[i]<<' ';
else
g<<-1<<' ';
}
g<<'\n';
}
int main()
{
citire();
program();
afisare();
g.close();
return 0;
}