图论部分小结

总的感受:

这里大概囊括了一下图论的基础知识,图论是一个比较考验思维的部分,尤其是后面有关二分图,网络流等的分支,对建模转化的要求还是很高的。

进入正题了:

一、最短路:

这一个部分不想多讲,虽然是很基础的一个部分,但是也很重要。

题目:

一、Telephone Lines。p.s:二分答案+最短路。

二、Roads and Planes。p.s:Topo序+dijkstra。

三、Cow Relays。p.s:Floyd+矩阵乘法。

二、最小生成树:

基础算法的话也不多讲了。主要是其实有些这种类型的题也很考验思维。。。

题目:

一、picnic planning。 p.s:最小生成树+枚举。

三、树的直径与LCA:

树的直径求法: ① 树形DP。 ②两遍BFS/DFS。

LCA的求法: ①树上倍增。 ②Tarjan+并查集(离线)。

这一类型的题目,一般需要能够发现隐藏在题目中的一些优秀的性质,然后和这些东西挂上联系,然后就很舒服了。

题目:

一、APIO2010巡逻 p.s:分类讨论+树的直径。

一、NOIP2007树网的核 p.s:分析性质+树的直径。

原文地址:https://www.cnblogs.com/Bhllx/p/10610275.html

时间: 2024-10-17 07:17:08

图论部分小结的相关文章

图论算法小结:次短路的求解

利用Dijkstra算法求解次短路 我们曾经学过利用Dijkstra算法求解最短路,但是如果要求解某一个结点的次短路该怎么做呢?实际上,我们仍然可以用Dijkstra算法来求解它. 首先来回顾一下Dijkstra算法的原理:首先把所有结点的最短距离设置为无穷大,然后令d[0]=0.接下来,每次都找到最短路已经确定的经典,更新从它出发的相邻结点的最短距离.以后我们不再考虑最短距离已经确定了的结点. 以上就是Dijkstra算法的主要过程,需要注意的一点是我们不再考虑的是"最短距离已经确定了的结点&

图论专题小结:网络流算法之ISAP算法

ISAP算法 ISAP(Improved Shortest Augument Path)算法是改进版的SAP算法,如果对效率要求很高的时候,可以用该算法. (1)概述:算法基于这样的一个事实:每次增广之后,任意结点到汇点(在残余网络中)的最短距离都不会减小.这样,我们可以利用d[i[表示结点i到汇点的距离的下界.然后再增广过程当中不断地修改这个下界.增广的时候和Dinic算法类似,只允许沿着d[i]==d[j]+1的弧(i,j)走. 不难证明,d[i[满足两个条件:(1)d[t]=0;(2)对任

图论算法小结:欧拉回路

欧拉回路 欧拉回路是指在一个图G中,从起点s出发,不重复地经过所有边后又返回到起点s的一条路径.同样还有关于欧拉道路的定义,不过起点和终点不一定重合,但都是不重复地经过图中的每一条边. 判断一个图中是否存在欧拉回路(道路)通过以下条件来判断: (1)如果图G是一个无向图,那么度数为奇数的点不能超过两个,且这两个点其中一个作为起点,另一个作为终点.如果度数均为偶数,那么所有点均可以作为起点或终点. (2)如果图G是一个无向图,那么度数为奇数的点不能超过两个,且这两个点中入度比出度小1的点必须作为起

图论专题小结:拓扑排序

拓扑排序 拓扑排序是针对有向图进行的,拓扑排序有两个作用:(1)针对某种定义好的"小于"关系为结点排序:(2)判断一个有向图中是否存在有向环.我们可以利用DFS来完成拓扑排序. 下面是判断一个有向图g中是否含有有向环的代码: #define N 100+10 int c[N], g[N][N];//利用二维数组g保存有向图 int n;//结点数,下标从0开始 bool toposort(int u) { c[u] = -1;//正在访问 for (int v = 0; v <

图论算法小结

//邻接矩阵存储结构定义如下: //邻接矩阵包含两种数组:顶点表和边表 #define MaxVertexNum 100 //顶点数目的最大值 typedef char VertexType; //顶点的数据类型 typedef int EdgeType; //带权图中边上权值的数据类型 typedef struct{ VertexType Vex[MaxVertexNum]; //顶点表 EdgeType Edge[MaxVertexNum][MaxVertexNum]; //邻接矩阵,边表

图论入门小结

1.传递闭包 和弗洛伊德一样的三个循环...不过从三角形松弛变成了判断两个点是否都有一条到某一个中间节点的路径,若有则两点联通. 复杂度n^3 2.弗洛伊德 任意两点间最短路 三角形性质 dis[x]+len[x][y]>=dis[y];//某一点到x的距离+x与y之间的距离>=该点到y的距离 松弛就是把不满足上述要求的最短距离改为满足的... 复杂度n^3 三个循环,中间节点放最外面 1 for(){// k的循环 2 for(){// i的循环 3 for(){// j的循环 4 if(d

2019/10/2 图论测试小结

T1: 题意:求一棵树上两条点不交路径,使它们的点权之和最大: 思考过程:联想到了一个相似的问题——树上求k条边不交路径的最大边权和,想到了拆点为边,很快发现不对.考虑到仅有两条边于是先求出一条直径,再分类讨论看第二条路是否经过第一条直径,不经过则bfs求最大值,经过则对直径上每一个点求一个最长的.以它为端点的.不经过直径上点的链,然后贪心求最大值. 题解:同思路: T2: 题意:一个完全图,一课树,完全图上两点之间的距离等于树上两点之间的距离,在完全图上求最长哈密顿路径: 思考过程:没想拿满分

图论--欧拉路,欧拉回路(小结)

在题目中在慢慢细说概念 1.HDU - 3018 Ant Trip 题目大意:又N个村庄,M条道路,问需要走几次才能将所有的路遍历 解题思路:这题问的是有关欧拉路的判定 欧拉路就是每条边只能走一次,且要遍历所有的边,简单的说就是一笔画(图连通) 这道题是无向图的欧拉路,无向图的欧拉路的判定:所有点的度数都是偶数度,或者只有两个点的度是奇数度,且图要是连通图 知道欧拉路是什么后,这题就比较好做了,第一件事就是找到有几个连通块,然后再判断一下每个连通块需要几笔才能完成就好了 #include <cs

第九章:图论和网络爬虫

上面我们谈了在搜索引擎中,如何建立索引,这里,我们讲如何自动下载互联网上所有的网页,重点就是图论中的遍历算法. 1.图论和网络爬虫 遍历算法主要有两种,一种是深度优先遍历,一种是广度优先遍历.所谓深度优先遍历,就是从一个节点开始,一直沿着一条路走到底,直到没路了,再回过头去找别的路,再一路走到底.说白了,就是往深处走.同样的,广度优先遍历,顾名思义,就是从一个节点开始,先把和他相连的都走一边,然后再以走过的节点为中心,一层一层走.拿网页来说,深度优先遍历,就是打开一个网页,选择其中一个URL,再