leetcode 面试题 04.01. 节点间通路 medium
题目描述:
解题思路:
求两点可达性,用BFS和DFS均可,注意这里给的是边的矩阵,所以需要转为邻接表形式
代码:
class Solution {
public:
bool findWhetherExistsPath(int n, vector<vector<int>>& graph, int start, int target) {
if (start == target)
return true;
// 把边的矩阵转为邻接表
vector<vector<int>> edges(n, vector<int>());
for (auto &one: graph){
edges[one[0]].push_back(one[1]);
}
vector<bool> visited(n, false);
visited[start] = true;
queue<int> q{{start}};
while(q.size()){
int cur = q.front();
q.pop();
for (int i: edges[cur]){
if (!visited[i]){
visited[i] = true;
if (i == target)
return true;
q.push(i);
}
}
}
return false;
}
};