邻接矩阵
#include<iostream>
#include<stack>
using namespace std;
const int N = 1e2 + 10;
//n个顶点,m条边
int n, m;
//邻接矩阵
int g[N][N];
//标记数组
bool vis[N];//vis[2]=1/0 代表2号点 1-被标记 0-没被标记
//dfs-深度优先搜索
void dfs(int s/*搜索的起点*/) {
stack<int> stk;
//1.起点入栈,入栈即标记(防止重复搜索)
stk.push(s); vis[s] = 1;
while (!stk.empty()) {
//2.搜索栈顶元素并弹栈
int v = stk.top(); stk.pop();
cout << v << " ";
//3.找到v的邻接点,沿着邻接点进行深度搜索
for (int i = 1; i <= n; i++) {//7后入栈先出栈
//for (int i = n; i >= 1; i--)//2后入栈先出栈
if (!vis[i] && g[v][i] == 1) {//i没有走过且i是v的邻接点
//入栈+标记
stk.push(i); vis[i] = 1;
}
}
}
}
int main() {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int u, v;
DFS深度优先搜索:邻接矩阵与邻接表

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



