Pagini recente » Cod sursa (job #2053685) | Cod sursa (job #1040326) | Cod sursa (job #1070937) | Cod sursa (job #824975) | Cod sursa (job #1607397)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
void bfs(int nod, vector<vector<int>> G, int N)
{
queue<int> q;
vector<int> level;
level.resize(N + 1, -1);
q.push(nod);
level[nod] = 0;
while (!q.empty())
{
nod = q.front();
q.pop();
for (vector<int>::iterator it = G[nod].begin(); it != G[nod].end(); it++)
{
if (level[*it] == -1)
{
q.push(*it);
level[*it] = level[nod] + 1;
}
}
}
ofstream g("bfs.out");
for (size_t i = 1; i <= N; i++)
{
g << level[i] << " ";
}
g.close();
}
int main()
{
vector<vector<int>> G;
int N, M, S, x, y;
ifstream f("bfs.in");
f >> N >> M >> S;
G.resize(N + 1);
for (int i = 1; i <= M; i++)
{
f >> x >> y;
G[x].push_back(y);
}
f.close();
bfs(S, G, N);
return 0;
}