递归 + 标记

一个连通图只要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(邻接矩阵)相关推荐

  1. 图的遍历(DFS和BFS)

    图的遍历是指从图中某一顶点出发,访遍图中其余顶点,且使每一个顶点仅被访问一次. 一.深度优先遍历(Depth First Search) 假设给定图G的初态是所有顶点均未曾访问过.在G中任选一顶点v为 ...

  2. (王道408考研数据结构)第六章图-第三节:图的遍历(DFS和BFS)

    文章目录 一:图的深度优先遍历(DFS) (1)回溯算法和DFS A:回溯算法的本质 B:回溯算法的框架 C:全排列 (2)图的DFS A:DFS思想 B:动画演示 C:代码 二:图的广度优先遍历(B ...

  3. 数据结构 --- 图的遍历 DFS、BFS

    什么是DFS.BFS? 一条线走到底,深度优先遍历,每一个顶点只遍历.只打印一次的方式:DFS.BFS 数据结构 --- 图的存储 单纯地把邻接顶点的邻接顶点打印出来,顶点重复遍历,打印多次 从 A→ ...

  4. 图的遍历DFS与BFS(邻接表)

    #include "stdafx.h" #include <iostream> #include <fstream> #include <queue& ...

  5. 图的遍历 DFS遍历(深学思维)

    前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 问题描述: 马上到寒假了,YHC准备去n大城市游玩.这些城市之间有些有航线,有些没有.由于YHC特别懒,现在他想请一位更更更更更蒟蒻 ...

  6. 【数据结构实验六】图的遍历DFS和BFS

    输入格式: 在第1行输入图的类型,1表示有向图,0表示无向图. 在第2行输入构造图的顶点,个数 N 不超过100.例如:图有5个顶点,则输入ABCDE. 后面 N 行,分别输入与ABCDE顶点相连的顶 ...

  7. PTA 地下迷宫探索(图的遍历dfs)

    地道战是在抗日战争时期,在华北平原上抗日军民利用地道打击日本侵略者的作战方式.地道网是房连房.街连街.村连村的地下工事,如下图所示. 我们在回顾前辈们艰苦卓绝的战争生活的同时,真心钦佩他们的聪明才智. ...

  8. 图——深度优先遍历(DFS)实现有向无环图的逆拓扑排序

    对图的深度遍历与对树的深度遍历思想类似,采用的是递归函数的办法. 如果是非连通图,则DFS遍历所有顶点即可. //Graph 图 //vertex 顶点,用一个int型变量表示//返回有向图G中顶点v ...

  9. 【数据结构笔记21】图的遍历,DFS与BFS,连通图

    本次笔记内容: 6.2.1 图的遍历 - DFS 6.2.2 图的遍历 - BFS 6.2.3 图的遍历 - 为什么需要两种遍历 6.2.4 图的遍历 - 图连不通怎么办? 文章目录 深度优先搜索(D ...

最新文章

  1. CodeChef Ada Pawns
  2. hdu 4506(快速幂+找规律)
  3. mysql order by 运算_在MySQL中具有ORDER BY的多个LIKE运算符?
  4. Java on Windows Mobile
  5. 国家级一级计算机考试题,国家级计算机一级考试试题
  6. Windows 10正式版21H2更新:之后功能性更新将减为年更
  7. C语言之typedef定义函数指针(十三)
  8. linux rm 命令删除文件恢复_【Linux】恢复误删除的文件或目录
  9. Steve Pavlina:如何ASAP找到人生目标?
  10. 八款Android开源游戏引擎
  11. ANSYSworkbench中skewness解释
  12. 基于SpringBoot进销存ERP管理系统,源代码分享
  13. 设计的银行账户管理系统,增加一个VIP账户的管理
  14. access如何设置定期报表汇总_Access如何制作复杂报表
  15. input标签只能输入数字
  16. 【VINS-MONO测试】安卓手机采集mono+imu数据
  17. canvas使用硬件加速
  18. XML (可扩展标记语言)
  19. 大规模分布式存储系统:原理解析与架构实战 (大数据技术丛书) - 电子书下载 -(百度网盘 高清版PDF格式)...
  20. 【HelloKitty团队项目】Beta阶段项目展示

热门文章

  1. VS2010 发布web项目 问题
  2. CMakeLists.txt学习记录
  3. kcachegrind安装
  4. C# Idioms: Safely方法
  5. linux在多核处理器上的负载均衡原理
  6. 使用Python3发送邮件测试代码
  7. vs2008常用操作汇总
  8. 制度汇编格式怎么生成目录_来自世界500强企业的管理表格DOC格式 1900套
  9. 请写出查询该表中成绩最大值的sql语句_SQL-汇总分析
  10. jpanel不使用jframe保存的图片为空_使用DataBinding还在为数据处理头疼?这篇文章帮你解决问题