Finding an Exit from a Maze
判断无向图中的两个点之间是否有一条路径
May 16, 2017
题目链接:pdf
这道题目给出一个无向图,一个起点,一个终点,判断从起点是否能够到达终点。 显然就是从起点开始做一次DFS就可以了。
// 2017/05/12 19:35:19
// 判断两个点是否连通。。。
#include <iostream>
#include <vector>
using namespace std;
void
dfs(vector<vector<int> > &adj, int x, int y, vector<bool> &visit)
{
visit[x] = true;
if (visit[y]) return;
for (size_t i = 0; i < adj[x].size(); ++i) {
if (!visit[adj[x][i]]) {
dfs(adj, adj[x][i], y, visit);
}
}
}
int reach(vector<vector<int> > &adj, int x, int y, int n) {
vector<bool> visit(n, false);
dfs(adj, x, y, visit);
return (visit[y] ? 1 : 0);
}
int main() {
size_t n, m;
cin >> n >> m;
// while(std::cin >> n >> m) {
vector<vector<int> > adj(n, vector<int>());
for (size_t i = 0; i < m; i++) {
int x, y;
std::cin >> x >> y;
adj[x - 1].push_back(y - 1);
adj[y - 1].push_back(x - 1);
}
int x, y;
std::cin >> x >> y;
std::cout << reach(adj, x - 1, y - 1, n) << endl;
// }
return 0;
}