dfs深度优先搜索—邻接矩阵 + 邻接矩阵-递归版 + 邻接表

DFS深度优先搜索:邻接矩阵与邻接表

邻接矩阵

#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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值