有向图的邻接矩阵深度优先c++
时间: 2024-12-12 22:15:44 浏览: 20
有向图的邻接矩阵深度优先搜索(DFS)是一种图遍历算法,用于访问图中的所有顶点。对于有向图,邻接矩阵是一种常用的表示方法。邻接矩阵是一个二维数组,其中行和列都表示图中的顶点。如果顶点i到顶点j有一条有向边,则矩阵中对应的位置为1,否则为0。
以下是C++实现有向图邻接矩阵的深度优先搜索的示例代码:
```cpp
#include <iostream>
#include <vector>
using namespace std;
class Graph {
private:
int V; // 顶点数
vector<vector<int>> adj; // 邻接矩阵
void DFSUtil(int v, vector<bool>& visited) {
visited[v] = true;
cout << v << " ";
for (int i = 0; i < V; ++i) {
if (adj[v][i] && !visited[i]) {
DFSUtil(i, visited);
}
}
}
public:
Graph(int V) : V(V), adj(V, vector<int>(V, 0)) {}
void addEdge(int v, int w) {
adj[v][w] = 1; // 添加有向边 v -> w
}
void DFS(int v) {
vector<bool> visited(V, false);
DFSUtil(v, visited);
}
};
int main() {
Graph g(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
cout << "深度优先搜索从顶点2开始: ";
g.DFS(2);
return 0;
}
```
在这个示例中,`Graph`类表示一个有向图,使用邻接矩阵来存储边。`addEdge`方法用于向图中添加有向边。`DFSUtil`是一个辅助函数,用于实现深度优先搜索。`DFS`方法用于从指定的顶点开始进行深度优先搜索。
阅读全文