Pagini recente » Cod sursa (job #2408896) | Cod sursa (job #1606555) | Cod sursa (job #938626) | Cod sursa (job #2616579) | Cod sursa (job #553117)
Cod sursa(job #553117)
#include <fstream.h>
ifstream f("bfs.in");
ofstream g("bfs.out");
int n,m,s;
int Graf[10003][10003],Coada[10003],color[10003],d[10003],inainte[10003],incep=1,sf=0;
//Pentru inceput voi face parcurgerea in latime cu ajutorul matricei de adiacenta.
int main()
{
int i,x,y,u,v;
f>>n>>m>>s;
for(i=1;i<=m;i++)
{
f>>x>>y;
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];
for(v=1;v<=n;v++)
{
if(Graf[u][v]==1)
if(color[v]==1)
{
color[v]=2;
d[v]=d[u]+1;
inainte[v]=u;
Coada[++sf]=v;
}
}
incep++;
color[u]=3;
}
for(i=1;i<=n;i++)
g<<d[i]<<' ';
g<<'\n';
f.close();
g.close();
return 0;
}