Pagini recente » Statistici Cerc Vianu (cercVianu) | insert title here | Politic2 | Diferente pentru info-oltenia-2018/individual/9 intre reviziile 2 si 4 | Cod sursa (job #1830897)
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct nod
{
int inf;
nod *urm;
}*v[100001];
void adaug (nod *&prim, int x)
{
nod *nou;
nou=new nod;
nou->inf=x;
nou->urm=NULL;
if(prim==NULL)
prim=nou;
else
{
nou->urm=prim;
prim=nou;
}
}
void afisare (nod *prim)
{
nod *p;
p=prim;
while(p!=NULL)
{
g<<p->inf<<" ";
p=p->urm;
}
}
int viz[100001];
void BF (int x)
{
viz[x]=1;
nod *t;
int c[100001];
int p,u;
p=u=1;
c[u]=x;
while(p<=u)
{
x=c[p];
for(t=v[x];t;t=t->urm)
{
if(viz[t->inf]==0){viz[t->inf]=viz[x]+1;u++;c[u]=t->inf;}
}
p++;
}
}
int n,m,S,i,x,y;
int main()
{
f>>n>>m>>S;
for(i=1;i<=m;i++)
{
f>>x>>y;
adaug(v[x],y);
}
BF(S);
for(i=1;i<=n;i++)
g<<viz[i]-1<<" ";
return 0;
}