Pagini recente » Cod sursa (job #72201) | Cod sursa (job #2102683) | Cod sursa (job #2351129) | Cod sursa (job #1038368) | Cod sursa (job #3246499)
#include <fstream>
#include <vector>
#include <queue>
void BFS(std::vector<std::vector<int>>& graph, std::vector<int>& dist, int start) {
dist[start] = 0;
std::queue<int> q; q.push(start);
while (!q.empty()) {
int currNode = q.front(); q.pop();
for (auto& neighbour : graph[currNode]) {
if (dist[neighbour] == -1) {
dist[neighbour] = dist[currNode] + 1;
q.push(neighbour);
}
}
}
}
int main() {
std::ifstream fin("bfs.in");
std::ofstream fout("bfs.out");
int n, m, s; fin >> n >> m >> s; s -= 1;
std::vector<std::vector<int>> graph(n, std::vector<int>());
for (int i = 0; i < m; i += 1) {
int u, v; fin >> u >> v; u -= 1, v -= 1;
graph[u].emplace_back(v), graph[v].emplace_back(v);
}
std::vector<int> dist(n, -1);
BFS(graph, dist, s);
for (int i = 0; i < n; i += 1) {
fout << dist[i] << ' ';
}
graph.clear(), dist.clear();
fin.close(), fout.close();
return 0;
}