假设有向图G以邻接矩阵方式存储,试编写算法判断该有向图中是否存在从顶点i到顶点j的路径(i~=j),利用c++实现
时间: 2024-12-13 15:15:56 浏览: 9
在C++中,我们可以使用深度优先搜索(DFS)或广度优先搜索(BFS)来判断有向图中是否存在从顶点i到顶点j的路径。这里我给出一个基于DFS的简单实现:
```cpp
#include <vector>
using namespace std;
// 定义邻接矩阵,假设为二维动态数组
vector<vector<bool>> adjMatrix; // G[i][j] 表示是否有从i到j的边
bool hasPath(int i, int j) {
vector<bool> visited(j + 1, false); // 记录每个顶点是否访问过
visited[i] = true;
// 使用深度优先搜索寻找路径
dfs(i, j, visited);
return visited[j]; // 如果找到路径,visited[j]会为true
}
void dfs(int u, int target, vector<bool>& visited) {
for (int v = 0; v <= target; v++) {
if (adjMatrix[u][v] && !visited[v]) { // 如果有边并且未访问
visited[v] = true;
if (v == target) return; // 找到了目标,直接返回
dfs(v, target, visited); // 继续向下搜索
}
}
}
阅读全文