Pagini recente » Cod sursa (job #3251995) | Cod sursa (job #2616535) | Cod sursa (job #2757717) | Cod sursa (job #2757721) | Cod sursa (job #1807488)
#include <iostream>
#include <fstream>
using namespace std;
//Fiind dat un nod S, sa se determine, pentru fiecare nod X,
//numarul minim de arce ce trebuie parcurse pentru a ajunge din nodul sursa S la nodul X.
//Fisierul de intrare bfs.in contine pe prima linie 3 numere intregi N M S, cu semnificatia din enunt
//. Urmatoarele M linii contin cate doua numere x y, cu semnificatia ca exista arc orientat de la x la y.
struct arc
{
int x,y;
} a[100];
int main()
{
ifstream fin("bfs.in");
ofstream fout("bfs.out");
int s,n,m,i,c[100],viz[100]= {0},inc=1,sf=0,nr=0;
fin >> n >> m >> s;
for(i=1; i<=m; i++)
fin >> a[i].x >> a[i].y;
c[++sf]=s;
viz[s]=nr;
while(inc<=sf)
{
for(i=1; i<=n; i++)
{
if(c[inc]==a[i].x&&viz[a[i].y]==0)
{
c[++sf]=a[i].y;
viz[a[i].y]=nr;
nr++;
}
}
inc++;
}
for(i=1;i<=n;i++)
{
if(viz[i]==0)
fout << "-1" << " ";
else
fout << viz[i] << " ";
}
fin.close();
fout.close();
return 0;
}