Pagini recente » Cod sursa (job #2774514) | Cod sursa (job #941051) | Cod sursa (job #1959446) | Cod sursa (job #2494506) | Cod sursa (job #2384797)
#include <fstream>
#include <vector>
#include <queue>
void BFS(int node, const std::vector<std::vector<int>>& graph, std::vector<int>& visited_nodes) {
std::queue<int> q;
int top;
visited_nodes[node] = 0;
q.push(node);
while (!q.empty()) {
top = q.front();
q.pop();
for (auto i: graph[top]) {
if (visited_nodes[i] < 0) {
visited_nodes[i] = visited_nodes[top] + 1;
q.push(i);
}
}
}
}
int main() {
std::ifstream fin("bfs.in", std::ifstream::in);
std::ofstream fout("bfs.out", std::ofstream::out);
int n, m, s, tmp1, tmp2;
fin >> n >> m >> s;
std::vector<int>visited_nodes(n + 1, -1);
std::vector<std::vector<int>> graph(n + 1);
for (int i = 0; i < m; i++) {
fin >> tmp1 >> tmp2;
graph[tmp1].push_back(tmp2);
}
BFS(s, graph, visited_nodes);
for (int index = 1; index <= n; index++)
fout << visited_nodes[index] << ' ';
}