Pagini recente » Rating Uta Cristian (cristian.uta) | Cod sursa (job #2428042) | Istoria paginii oji2015_09_1 | Istoria paginii runda/barosanii | Cod sursa (job #2123772)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
int viz[1001],c[1001],a[101][101],n,m,s,p[1001],prim=1,ultim=1,varf;
void citire()
{
f>>n>>m>>s;
for(int i=1;i<=m;i++)
{
int x,y;
f>>x>>y;
a[x][y]=1;
}
}
void bf_recursiv() //parcurgerea in latime
{int k;
if(prim<=ultim)
{varf=c[prim];
for(k=1;k<=n;k++)
if(a[varf][k]==1 && viz[k]==0) //il adaug pe k in coada daca este vecin pt. varf si nu a fost vizitat
{
ultim++;c[ultim]=k;p[k]=p[varf]+1;viz[k]=1;
}
prim++;
bf_recursiv();
}
}
int main()
{citire();
c[1]=s;viz[s]=1;
bf_recursiv();
for(int i=1;i<=n;i++)
if(i!=s && !p[i]) p[i]=-1;
for(int i=1;i<=n;i++)
g<<p[i]<<" ";
return 0;
}