Pagini recente » Cod sursa (job #414021) | Cod sursa (job #627849) | Cod sursa (job #2241533) | Cod sursa (job #1918571) | Cod sursa (job #1438101)
#include <iostream>
#include <fstream>
#include <vector>
#define NMAX 100005
std::vector<int> adiacenta[NMAX];
int n, m, Start, L;
std::vector<int> G(NMAX), S(NMAX), Cost(NMAX, -1);
void BFS(int nod_curent)
{
L = 1;
Cost[nod_curent] = 0;
S[L] = nod_curent;
for (int i = 1; i <= L; i++)
{
for (int j = 0; j < G[S[i]]; j++)
{
if (Cost[adiacenta[S[i]][j]] == -1)
{
S[++L] = adiacenta[S[i]][j];
Cost[S[L]] = Cost[S[i]] + 1;
}
}
}
}
int main()
{
std::ifstream f("bfs.in");
std::ofstream g("bfs.out");
f >> n >> m >> Start;
int x, y;
for (int i = 1; i <= m; i++)
{
f >> x >> y;
adiacenta[x].push_back(y);
}
for (int i = 1; i <= n; i++)
G[i] = adiacenta[i].size();
BFS(Start);
for (int i = 1; i <= n; i++)
g << Cost[i] << " ";
return 0;
}