图的遍历——DFS(邻接矩阵)
递归 + 标记
一个连通图只要DFS一次,即可打印所有的点。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <malloc.h>using namespace std;const int VERTEX_NUM = 20;
const int INFINITY = 0x7fffffff; // 最大int型数,表示权的无限值 bool vis[VERTEX_NUM];class Graph {
public:int vexNum;int edgeNum;int vex[VERTEX_NUM];int arc[VERTEX_NUM][VERTEX_NUM];
};void createGraph(Graph &G)
{cout << "please input vexNum and edgeNum: ";cin >> G.vexNum >> G.edgeNum;for (int i = 0; i != G.vexNum; ++i) {cout << "please input no" << i+1 << " vertex: ";cin >> G.vex[i];}for (int i = 0; i != G.vexNum; ++i) {for (int j = 0; j != G.vexNum; ++j) {G.arc[i][j] = INFINITY;}}for (int k = 0; k != G.edgeNum; ++k) {cout << "please input the vertex of edge(vi, vj) and weight: ";int i, j, w;cin >> i >> j >> w;G.arc[i][j] = w;G.arc[j][i] = G.arc[i][j]; // 无向图 }
}void DFS(const Graph &G, int k)
{vis[k] = true;cout << G.vex[k] << " "; // 打印图的结点 for (int i = 0; i != G.vexNum; ++i) {if (G.arc[k][i] != INFINITY && !vis[i]) DFS(G, i);}
}void DFSTraverse(const Graph &G)
{memset(vis, false, VERTEX_NUM);// 连通图一次即遍历完成 for (int i = 0; i != G.vexNum; ++i) {if (!vis[i])DFS(G, i);}
} int main()
{Graph G;createGraph(G);DFSTraverse(G);return 0;
}
转载于:https://www.cnblogs.com/xzxl/p/8646292.html
图的遍历——DFS(邻接矩阵)相关推荐
- 图的遍历(DFS和BFS)
图的遍历是指从图中某一顶点出发,访遍图中其余顶点,且使每一个顶点仅被访问一次. 一.深度优先遍历(Depth First Search) 假设给定图G的初态是所有顶点均未曾访问过.在G中任选一顶点v为 ...
- (王道408考研数据结构)第六章图-第三节:图的遍历(DFS和BFS)
文章目录 一:图的深度优先遍历(DFS) (1)回溯算法和DFS A:回溯算法的本质 B:回溯算法的框架 C:全排列 (2)图的DFS A:DFS思想 B:动画演示 C:代码 二:图的广度优先遍历(B ...
- 数据结构 --- 图的遍历 DFS、BFS
什么是DFS.BFS? 一条线走到底,深度优先遍历,每一个顶点只遍历.只打印一次的方式:DFS.BFS 数据结构 --- 图的存储 单纯地把邻接顶点的邻接顶点打印出来,顶点重复遍历,打印多次 从 A→ ...
- 图的遍历DFS与BFS(邻接表)
#include "stdafx.h" #include <iostream> #include <fstream> #include <queue& ...
- 图的遍历 DFS遍历(深学思维)
前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 问题描述: 马上到寒假了,YHC准备去n大城市游玩.这些城市之间有些有航线,有些没有.由于YHC特别懒,现在他想请一位更更更更更蒟蒻 ...
- 【数据结构实验六】图的遍历DFS和BFS
输入格式: 在第1行输入图的类型,1表示有向图,0表示无向图. 在第2行输入构造图的顶点,个数 N 不超过100.例如:图有5个顶点,则输入ABCDE. 后面 N 行,分别输入与ABCDE顶点相连的顶 ...
- PTA 地下迷宫探索(图的遍历dfs)
地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...
- 图——深度优先遍历(DFS)实现有向无环图的逆拓扑排序
对图的深度遍历与对树的深度遍历思想类似,采用的是递归函数的办法. 如果是非连通图,则DFS遍历所有顶点即可. //Graph 图 //vertex 顶点,用一个int型变量表示//返回有向图G中顶点v ...
- 【数据结构笔记21】图的遍历,DFS与BFS,连通图
本次笔记内容: 6.2.1 图的遍历 - DFS 6.2.2 图的遍历 - BFS 6.2.3 图的遍历 - 为什么需要两种遍历 6.2.4 图的遍历 - 图连不通怎么办? 文章目录 深度优先搜索(D ...
最新文章
- CodeChef Ada Pawns
- hdu 4506(快速幂+找规律)
- mysql order by 运算_在MySQL中具有ORDER BY的多个LIKE运算符?
- Java on Windows Mobile
- 国家级一级计算机考试题,国家级计算机一级考试试题
- Windows 10正式版21H2更新:之后功能性更新将减为年更
- C语言之typedef定义函数指针(十三)
- linux rm 命令删除文件恢复_【Linux】恢复误删除的文件或目录
- Steve Pavlina:如何ASAP找到人生目标?
- 八款Android开源游戏引擎
- ANSYSworkbench中skewness解释
- 基于SpringBoot进销存ERP管理系统,源代码分享
- 设计的银行账户管理系统,增加一个VIP账户的管理
- access如何设置定期报表汇总_Access如何制作复杂报表
- input标签只能输入数字
- 【VINS-MONO测试】安卓手机采集mono+imu数据
- canvas使用硬件加速
- XML (可扩展标记语言)
- 大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书) - 电子书下载 -(百度网盘 高清版PDF格式)...
- 【HelloKitty团队项目】Beta阶段项目展示