图论算法

【算法简述】图论专题:最短路

纵然是瞬间 提交于 2019-11-30 10:52:58
图论问题概述总结 对于**图论**,我们尊熟悉的算法是比较多的,这次,我就找了集中常用的算法。 ## 几种算法 1. **最短路**算法(Dijkstra,SPFE,FLOYD) - Dijkstra单源最短算法 首先,此算法适用于计算一个点到另一个点的最短路径,且算法绝对不能出现负环。这个算法的速度慢,只用于接觉小规模的问题,如图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190609113100303.png)这个图就是求算法的基本思路。算法过程: - 从节点上找到最近点那个节点,将他标记,加入集合U。 - 将定点U连出边的邻点相连接,不在集合U中寻找。 - 重复前面的操作,用来指导V=U是,查找结束,最后结束流程。 本算法的算法流程图: https://wenku.baidu.com/view/8a5c11303968011ca300916a.html 参考代码: ``` #include <iostream> #include <cstring> using namespace std; const int N = 1e3 + 9; const int M = 1e4 + 9; const int inf = 0x3f3f3f3f; struct edge { int v, w, next; edge() {} edge(int

图论算法总结(一)——图的遍历

点点圈 提交于 2019-11-30 02:22:00
图论算法总结 一、前言 关于数据结构,主要是有关树和图是最终的难点和痛点,关于算法,记住名字很简单,记住原理要花一点时间,如何内化为自己本身的知识,以及,在脑中有思路,随拿随用,这个需要特定的记忆方式。如果不能即拿即用,并不能说自己了解这个算法。建议大家,以自己的思维为中心,记住该思维的逻辑的同时,也记住该思路的代码,把算法内化为自己的修养。 参考博文: https://liuchuo.net/archives/tag/dfs(与原博文有一定差异,建议大家也按照自己思路进行书写代码,每个人思维方式不一样 ) 二、图的遍历 2.1.深度优先dfs遍历图 按照深度优先方式访问未访问的节点 2.1.1.伪代码 dfs(u){ vis[u]=true; for(从u出发能到达的所有顶点v) if(vis[v]==false) dfs(v); } dfsTrave(G){ for(G的所有节点u) if(vis[u]==false) dfs(u) } 2.1.2.C语言代码(邻接矩阵) //邻接矩阵 void dfs(int u){ vis[u]=1; printf("%d",u); for(int i=0;i<vertxNum;i++) if(vis[i]==0&&path[u][i]==1) dfs(i); } void dfsTrave(){ for(int i=0;i

数据结构之图论算法

无人久伴 提交于 2019-11-30 00:53:31
一、图的基本概念和定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为 G =(V,E) ; 图的顶点个数不能为0,但边数可以为0 ,一般没有空图的说法,图论里的零图是表示只由孤立节点组成的图。 数据结构中讨论的图都是 简单图 ,即没有环也没有重边的图。 一条边 依附 于两个点,两点的 邻接 意味着两点由一条边相连。 含有n个顶点的无向完全图有n*(n-1)/2条边,有向完全图有n*(n-1)条边。 边数少的图就是 稀疏图, 边数多的图就是 稠密图。 顶点的度是依附于该顶点的边数 简单通路就是顶点没有重复的路径。 简单回路:除了第一个点和最后一个点外,没有重复访问的点。 入度等于出度等于边数,图的度之和等于边数的二倍。 权:边有值。网:边上带权的图。 无权图的路径长度为路径边的条数。 连通图:图中任意两个顶点都是连通的 连通分量:非联通图的 极大 连通子图称为连通分量,(连同依附于所有点的边) 生成树:n个节点的连通图G的生成树是包含G中全部顶点的一个极小连通子图。含有n-1条边,多一条边构成回路,少一条边不连通。生成森林就是分别得到一棵生成树。 二、图的遍历 1、每次找邻接点,有多个就优先选择序号小的,并且标记表示已经访问过,深度优先遍历可以,数据结构是栈 2、BFS广度优先搜索,有就放入队列,取出队头,访问队头邻接点,入队 来源: CSDN 作者: 狠人王 链接:

浅谈OI中的图论算法(更新到9.17)

耗尽温柔 提交于 2019-11-29 22:03:44
咕了两个月的我( 如果不算Luogu的题解 )终于回来写博了qwq,因为我的数据结构知识一直很薄弱,每次考试老是失分,所以我决定写一写关于图论的博客,最近一段时间也正好在复习这部分,这篇博客的内容会涉及到:树与图的遍历,树的深度,图的联通块,拓扑排序,树的重心,最短路,最小生成树,并查集,Tarjan与图的连通性,树的直径,LCA,树链剖分,负环。文章内容与lyd的《算法竞赛进阶指南》重合度比较高(因为我就是按照他的书来复习的),同时文章以讲解为辅,代码为主,适合各位同学复习而并非初学者接触。 所有模板都是我手打的,也许有错误,欢迎批评指正弱弱的我qwq。 声明 博客中如果没有特殊说明,则默认是n个点和无向图,文中会使用vector,邻接表,邻接矩阵这三种方式来存储。 树与图的遍历 树与图的存储方式是相同的,遍历可以采用dfs和bfs这两种方式。 深度优先遍历与深度 众所周知写这个只是为了知识的完整性,大家随便看看就行。 dep是深度数组。 void dfs(int u) { vis[u]=true; for(int i=h[u];i!=-1;i=e[i].nxt) { int v=e[i].v; if(vis[v]) continue; dep[v]=dep[u]+1; dfs(v); } } 广度优先遍历 bfs并没有dfs常用,用队列q来存储,每次遇到一个节点u,就入队

图论算法

你说的曾经没有我的故事 提交于 2019-11-27 22:57:22
Problem1一笔画问题 题目描述 给出一个图,求其欧拉回路(若没有回路,则求其欧拉路径),若不存在则输出‘No solution’ 输入 输入的第一行为边数F(<=1024),后面F行每行表示一条边(定点标号范围为1-500) 输出 输出一条合法的欧拉回路(路径),若有多条满足要求,输出其字典序最小的那一个。 Problem2 Car的旅行路线 题目描述 住在城市A的Car想和朋友一起去城市B旅游。她知道每个城市都有四个飞机场,分别位于一个矩形的四个顶点上,同一个城市中两个机场之间有一条笔直的高速铁路,第I个城市中高速铁路了的单位里程价格为Ti,任意两个不同城市的机场之间均有航线,所有航线单位里程的价格均为t。 那么Car应如何安排到城市B的路线才能尽可能的节省花费,求其最少花费 输入 第一行有四个正整数s,t,A,B。 S(0<S<=100)表示城市的个数,t表示飞机单位里程的价格,A,B分别为城市A,B的序号,(1<=A,B<=S)。 接下来有S行,其中第I行均有7个正整数xi1,yi1,xi2,yi2,xi3,yi3,Ti,这当中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分别是第I个城市中任意三个机场的坐标,T I为第I个城市高速铁路单位里程的价格。 输出 输出最小花费,保留一位小数 Problem3求割点与桥 题目描述 给定一个图,求其割点与桥 输入

noip纲要2012

自闭症网瘾萝莉.ら 提交于 2019-11-27 02:10:40
数据结构 队列 栈 堆 邻接矩阵 邻接表 边集数组 线段树 基础算法 搜索 分治 贪心 递推 各种排序 快排 冒泡 归并 拓扑 哈希表 并查集 图论算法 最小生成树(kruskal)prim我不会 = = 强连通分量tarjan 单源最短路spfa dijkstra 全图最短路floyd 二分图最大匹配匈牙利算法 最近公共祖先lca 离线tarjan算法 DP 简单线性动规 最大子段和、最大子矩阵和 字符串距离 背包问题 合并石子平方版 树形动规 转载于:https://www.cnblogs.com/neayo/archive/2012/11/08/2760101.html 来源: CSDN 作者: weixin_30294709 链接: https://blog.csdn.net/weixin_30294709/article/details/96113616

图论 - 网络流_最大流入门题

筅森魡賤 提交于 2019-11-26 18:17:57
照着刘汝佳的训练指南,网络流从开始学习到刷了10来题,共花了10天,其中不知道为什么有好几天的断档。。 网络流,目前我就用着dinic算法,一开始是用的EK算法,即普通的增广路算法。本来还打算搞下ISAP算法,不过听铭神说这两种算法他在做题时,一般ISAP能过的,Dinic一样过了。so,那就算了,暂时先放放,时间也不多。 ———————————————————————————————————————————————— 题目: http://vjudge.net/contest/view.action?cid=48586#overview 上面的链接是我挂在虚拟OJ上的contest,都是从下面网络流题集中调出来一些的。 网络流的题集:http://blog.csdn.net/shahdza/article/details/7779537 此处很齐全。 体会: 网络流主要注重你的构图能力,一开始还以为最大流的算法会很难的,其实还可以接受。 感觉以后刷专题要写博客的话,还是A一题写一篇,到最后再整合。一次写10多题的题解,好累。。。 ———————————————————————————————————————————————— A - PIGS poj 1149 一开始不会,后来看了看题解,神一般的分析,代码就不敲了。 http://www.cnblogs.com/sleeper