Pagini recente » Cod sursa (job #2627366) | Cod sursa (job #3310723) | Cod sursa (job #248343) | Cod sursa (job #2928431) | Cod sursa (job #2384859)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
std::ifstream f("bfs.in");
std::ofstream g("bfs.out");
struct nod{
int lg = -1;
std::vector <int> vecini;
};
void BFS(std::vector <nod> &noduri, int sursa)
{
std::queue<nod> coada;
noduri[sursa - 1].lg = 0;
coada.push(noduri[sursa-1]);
int i;
nod n;
while (!coada.empty())
{
n = coada.front();
coada.pop();
for (i = 0; i < n.vecini.size(); i++)
if (noduri[n.vecini[i]-1].lg == -1)
{
noduri[n.vecini[i]-1].lg = n.lg + 1;
coada.push(noduri[n.vecini[i]-1]);
}
}
}
int main()
{
int N, M, S, i, m1, m2;
f>>N>>M>>S;
std::vector <nod> noduri(N);
for (i = 0; i < M; i++)
{
f>>m1>>m2;
noduri[m1-1].vecini.push_back(m2);
}
BFS(noduri, S);
for (i = 0; i < N; i++)
{
g<<noduri[i].lg<<" ";
}
f.close();
return 0;
}