第二节 城市地图-图的深度优先遍历

基于邻接矩阵的存储有向图的深度优先遍历算法

在处理无向图初始化的时候有一点需要注意,要保证无向图的对称性

即graphic[i][j] = graphic[j][i]

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;typedef vector<vector<int> > VVI;
typedef vector<bool>VB;int res = INT_MAX;void dfs(int cur, int dist, VVI& g, VB& visit){if(dist > res) return;if(cur == visit.size()-1){if(dist < res) res = dist;return;}for(int i =0 ; i < visit.size(); ++ i){if(g[cur][i]!=INT_MAX && !visit[i]){visit[i] = true;dfs(i,dist+g[cur][i],g,visit);visit[i] = false;}}
}int main(){int n,m;cin >> n >> m;VVI graphic(n,vector<int>(n,INT_MAX));for(int i = 0 ; i  < n ; ++ i) graphic[i][i] = 0;for(int i = 0 ; i < m ; ++ i){int a,b ,c;cin >> a >> b >> c;graphic[--a][--b] = c;}VB visit(n,false);visit[0] = true;dfs(0,0,graphic,visit);cout<<res<<endl;}

深度优先遍历

第三节 最少转机-图的广度优先遍历

基于邻接矩阵的存储无向图的广度优先遍历算法

广度优先搜索更加适用于所有边的权值相同的情况

#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
#include <queue>
#include <utility>
using namespace std;typedef vector<vector<int> > VVI;
typedef pair<int,int> Node;int main(){int n,m, startPoint,endPoint;cin >> n >> m >>startPoint >> endPoint ;--startPoint; --endPoint;VVI graphic(n,vector<int>(n,INT_MAX));for(int i = 0 ; i  < n ; ++ i) graphic[i][i] = 0;for(int i = 0 ; i < m ; ++ i){int a,b;cin >> a >> b;--a;--b;graphic[a][b] = 1;graphic[b][a]=1;}vector<bool> visit(n,false);queue<Node> que;que.push(Node(startPoint,0));visit[startPoint] = true;while(!que.empty()){Node tmp = que.front();que.pop();int point = tmp.first;for(int i = 0 ; i < n ; ++ i){if(!visit[i] && graphic[point][i]!=INT_MAX){visit[i] = true;que.push(Node(i,tmp.second+1));if( i == endPoint){break;}}    }}cout<<que.back().second<<endl;
}

广度优先搜索

转载于:https://www.cnblogs.com/xiongqiangcs/p/3802812.html

《啊哈!算法》第5章 图的遍历相关推荐

  1. 啊哈算法第五章 图的遍历

    一.图的一些概念 简单来说,图是由顶点和连接这些顶点的边构成的集合.遍历就是指把图的每一个顶点都访问一次,用一个数表示各个顶点被第几个访问到,这个数就叫时间戳. 图的邻接矩阵存储法: 关联于同一条边的 ...

  2. c语言遍历算法的头文件,图优先遍历算法(C语言版).doc

    图优先遍历算法(C语言版) 众炼向饭桨泞奉源柿虐萧宰徽强药邻摘甭膜酣猖椅支习洋瞪较效笋盏厚婪跳博险僳乘措笆却问谬闸皇机兽偿谐芹违邹竞芬襟竣备烘令救汇邵叙鹰扭肾钙苏辅捕先是埠郧苛三驯溅烂右井准刮修柒拿苇 ...

  3. 算法:C++实现图的遍历

    ​​​​​​ 目录 图的遍历 深度优先搜索法 广度优先搜索法 代码及注释部分 图的遍历,属于数据结构中的内容.指的是从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次.图的遍历操作和树的遍历操 ...

  4. 数据结构与算法(7-2)图的遍历(深度优先遍历DFS、广度优先遍历BFS)(分别用邻接矩阵和邻接表实现)

    目录 深度优先遍历(DFS)和广度优先遍历(BFS)原理 1.自己的原理图 2.官方原理图 一.邻接矩阵的深度优先遍历(DFS) 1.原理图 2. 过程: 3.总代码 二.邻接表的深度优先遍历(DFS ...

  5. NO.10章 图(遍历、最短路、生成树、拓扑、关键路径)

    1. 定义存储 2. 遍历 1)DFS 2)BFS 3. 最短路径 1)Dijkstra 2)Bellman-Ford 3)SPFA 4)Floyd 4. 最小生成树 1)性质 2)prim 3)kr ...

  6. 周报(水管工问题,和图的遍历)

    枯木逢春不在茂,年少且惜镜边人 这周继续完成上周么有完成的目标,然后学学java,学学图的遍历,学学浴谷上的题,然后上天. 1.水管工问题 #include<stdio.h> int bo ...

  7. 【Java数据结构与算法】第十六章 图

    第十六章 图 文章目录 第十六章 图 一.图 1.介绍 2.基本术语 3.邻接矩阵 4.邻接表和逆邻接表 5.十字链表 二.深度优先遍历 三.广度优先遍历 四.代码实现 一.图 1.介绍 图相较于前面 ...

  8. 大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 21

    大话数据结构读书笔记艾提拉总结 查找算法 和排序算法比较好 第1章数据结构绪论 1 第2章算法 17 第3章线性表 41 第4章栈与队列 87 第5章串 123 第6章树 149 第7章图 211 第 ...

  9. 大话数据结构 第七章 图(二) 最小生成树、最短路径、拓扑排序、关键路径算法

    大话数据结构 第七章 图(二) 最小生成树.最短路径.拓扑排序.关键路径算法 最小生成树 定义 Prim算法 Kruskal算法 最短路径 Dijkstra算法 Floyd算法 拓扑排序 AOV网 拓 ...

  10. 第六章图-算法6.8普里姆算法

    第六章图-算法6.8普里姆算法 代码实现 #pragma once #include <iostream>using namespace std;//图的邻接矩阵存储(创建无向图) //表 ...

最新文章

  1. 凯文凯利:未来世界发展七大趋势
  2. 上海交大张拳石:神经网络的可解释性,从经验主义到数学建模
  3. python面试常见问题-Python面试中常见的40个问题
  4. 面试常考的树,我这样讲给你听!
  5. 19-爬虫之scrapy框架大文件下载06
  6. 《C++ Primer 5th》笔记(7 / 19):类
  7. 哈工大博士历时半年整理的《Pytorch常用函数函数手册》开放下载!内含200余个函数!...
  8. 区块链与分享型数据库
  9. 1小时学会JQuery
  10. 同为开发:有了分布式/高并发等这些Java项目经历,面大厂稳了!
  11. 依赖反转原则(DIP)
  12. 关于JAVA调用oracle存储过程
  13. 阿里云CentOS 7.4 使用Flask建站
  14. Scrapy实例__链家租房爬虫
  15. 给定经纬度计算距离_根据两点经纬度计算距离!
  16. 使用python搜索Excel表,查找内容
  17. 苹果开发人员账号注冊流程
  18. 最大公约数的四种求法(暴力、短除法、辗转相除法递归和非递归)
  19. Day08——字符串匹配、小结
  20. 聚焦安稳易用,云和恩墨 MogDB 荣登“集中式数据库影响力指数”榜单

热门文章

  1. 语句 if else
  2. Hadoop大数据之Debug
  3. Web.config常用节点解析:
  4. 服务器设计笔记(1)-----消息的封装
  5. 我的2009:知识管理篇
  6. Flex 与.net 进行通信可以通过Fluorine(fluorinefx),WebORB For .net,Socket
  7. 报错ClassNotFoundException:org.springframework.cloud.client.loadbalancer.LoadBalancerClientsProperties
  8. python 遍历数组gbk编码_python bytes和bytearray、编码和解码
  9. c语言元素累积的计算,C语言:计算输出给定数组中每相邻两个元素的平均值的平方根之和。...
  10. 启动mysql显示FAILED_转mysql提示mysql daemon failed to start 启动不了的解决办法