Pagini recente » Cod sursa (job #3175755) | Cod sursa (job #445495) | Cod sursa (job #442650) | Cod sursa (job #2947182) | Cod sursa (job #2653341)
#include <fstream>
#include <iostream>
#include <cassert>
#include <vector>
#include <queue>
#include <utility>
using namespace std;
vector<int> bfs(vector<vector<uint>> &graph, uint source)
{
size_t N = graph.size();
vector<int> dist(N, -1);
queue<uint> Q;
dist[source] = 0;
Q.push(source);
while (!Q.empty())
{
uint node = Q.front();
Q.pop();
for (uint neigh : graph[node])
{
if (dist[neigh] == -1)
{
Q.push(neigh);
dist[neigh] = dist[node] + 1;
}
}
}
return dist;
}
int main(int argc, char const *argv[])
{
ifstream fin("bfs.in");
ofstream fout("bfs.out");
assert(fin.is_open());
uint N, M, S;
fin >> N >> M >> S;
vector<vector<uint>> graph(N);
for (size_t i = 0; i < M; i++)
{
uint x, y;
fin >> x >> y;
graph[x-1].push_back(y-1);
}
vector<int> dist = bfs(graph, S-1);
for (auto d : dist)
{
fout << d << ' ';
}
return 0;
}