Pagini recente » Statistici Daria Bugeac (daria_bugeac) | Istoria paginii utilizator/roman_laura | Cod sursa (job #2869940) | Cod sursa (job #1009184) | Cod sursa (job #2000531)
#include <fstream>
using namespace std;
ifstream fin("bfs.in");
ofstream fout("bfs.out");
struct nod
{
int inf;
struct nod *urm;
} *v[100001],*step;
int dist[100001],coada[100001],st,dr;
void bfs(int s)
{
dist[s]=1;
coada[0]=s;
while(st<=dr)
{
int nod=coada[st];
for(step=v[nod];step!=0;step=step->urm)
{
if(dist[step->inf]==0 || dist[step->inf]>dist[nod]+1)
{
coada[++dr]=step->inf;
dist[step->inf]=dist[nod]+1;
}
}
st++;
}
}
int main()
{
int n,m,s,a,b,i;
fin>>n>>m>>s;
for(i=1;i<=m;i++)
{
fin>>a>>b;
nod *p=new nod;
p->inf=b;
p->urm=v[a];
v[a]=p;
}
bfs(s);
for(i=1;i<=n;i++)
{
if(dist[i]==0) fout<<"-1 ";
else fout<<dist[i]-1<<" ";
}
}