C++ 实现图的广度优先遍历:判断两点之间是否可达
#include<iostream>\n#include<vector>\n#include<queue>\nusing namespace std;\n\nbool bfs(vector<vector<int>>& graph, int start, int end) {\n int n = graph.size();\n vector<bool> visited(n + 1, false);\n queue<int> q;\n q.push(start);\n visited[start] = true;\n while (!q.empty()) {\n int curr = q.front();\n q.pop();\n if (curr == end) {\n return true;\n }\n for (int i = 0; i < graph[curr].size(); i++) {\n int next = graph[curr][i];\n if (!visited[next]) {\n q.push(next);\n visited[next] = true;\n }\n }\n }\n return false;\n}\n\nint main() {\n int n, m, a, b;\n cin >> n >> m >> a >> b;\n vector<vector<int>> graph(n + 1);\n for (int i = 0; i < m; i++) {\n int u, v;\n cin >> u >> v;\n graph[u].push_back(v);\n }\n if (bfs(graph, a, b)) {\n cout << "Yes" << endl;\n } else {\n cout << "No" << endl;\n }\n return 0;\n}
原文地址: https://www.cveoy.top/t/topic/pn3K 著作权归作者所有。请勿转载和采集!