Pagini recente » Cod sursa (job #2316244) | Cod sursa (job #1355076) | Cod sursa (job #2307789) | Cod sursa (job #336795) | Cod sursa (job #553552)
Cod sursa(job #553552)
#include <fstream.h>
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s;
int Coada[100003],color[100003],d[100003],inainte[100003],incep=1,sf=0;
//Liste de adiacenta
struct nod { int nd;
nod *next;
}; nod *L[1000003];
int main()
{
int i,x,y,u,v;
nod *p;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
//Lista de adiacenta
p=new nod;
p->nd=y;
p->next = L[x];
L[x]=p;
//Matrice de adiacenta
//Graf[x][y]=1;
}
//Alb-1 ; Gri-2 ; Negru-3
for(i=1;i<=n;i++)
{
color[i]=1;
d[i]=-1;
inainte[i]=0;
}
color[s]=2;
d[s]=0;
inainte[s]=0;
Coada[++sf]=s;
while(incep<=sf)
{
u=Coada[incep];
p=L[u];
while(p)
{
if(color[p->nd]==1)
{
color[p->nd]=2;
d[p->nd]=d[u]+1;
inainte[p->nd]=u;
Coada[++sf]=p->nd;
}
p=p->next;
}
incep++;
color[u]=3;
}
for(i=1;i<=n;i++)
g<<d[i]<<' ';
g<<'\n';
f.close();
g.close();
return 0;
}