Pagini recente » Cod sursa (job #1782373) | Cod sursa (job #1096500) | Cod sursa (job #2931399) | Cod sursa (job #803080) | Cod sursa (job #2737428)
#include <fstream>
#include<vector>
#define nmax 100005
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
struct BFS
{
int nod, val;
};
int a[nmax];
bool viz[nmax];
int n, m, nod;
vector <BFS> coada;
vector<int> vecini[nmax];
int main()
{
in>>n>>m>>nod;
for(int i=1; i<=n; i++)
a[i] = -1;
BFS aux;
aux.nod = nod;
aux.val = 0;
coada.push_back(aux);
for(int i = 0; i<m; i++)
{
int a, b;
in>>a>>b;
vecini[a].push_back(b);
}
for(int h = 0; h<coada.size(); h++)
{
int anod = coada[h].nod, ceva = coada[h].val;
if(viz[anod]==0)
{
viz[anod]=1;
a[anod] = coada[h].val;
for(int i=0; i<(int)vecini[anod].size(); i++)
{
if(viz[vecini[anod][i]]==0)
{
BFS lee;
lee.nod = vecini[anod][i];
lee.val = coada[h].val+1;
coada.push_back(lee);
}
}
}
}
for(int i=1; i<=n; i++)
{
out<<a[i]<<" ";
}
return 0;
}