图论
文章平均质量分 79
Pekary
Read the tea leaves.
展开
-
Floyd求最小环 hdu1599 find the mincost route
裸的最小环。用Floyd实现非常简单。代码如下:#include#includeconst int N = 128;const int INF = 0x3f3f3f3f;int n, m;int g[N][N];int dis[N][N];int floyd () { memset(dis, INF, sizeof(dis)); int minCir原创 2015-11-04 21:24:02 · 337 阅读 · 0 评论 -
树的直径 hdu 4607
树的直径定义:树中所有最短路径的最大值。定义distance(a, b)为顶点a与b之间的最短距离。用数学语言表示就是:对于一棵树 T = (V, E),彐vx, vy ∈ V, ∀ v1, v2∈V, 都有distance(v1, v2) 现在我们来用算法求解树的直径。求解过程很简单,两次BFS。(1)第一次BFS我们可以从任意顶点出发,不妨设该顶点为 t, 找到距离原创 2015-09-10 20:00:19 · 533 阅读 · 0 评论 -
差分约束系统
差分约束系统定义(引自维基百科):如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi例如,有如下不等式组:原创 2015-10-29 13:51:22 · 1039 阅读 · 0 评论 -
POJ2449 Remmarguts' Date 第K短路
K短路求法:SPFA+A*。简单讲讲这个A*算法。它有一个估价函数 f(x) , 定义f(x) = g(x) + h(x). 其中g(x)为从起点到当前点的代价, h(x)为从当前点到终点的代价。怎么把它用来求K短路呢?定义结构体Node,其中有成员(to, f, g),to为当前顶点,f , g和上面定义相同。在求K短路中g(x)就是重源点到当前点的路径长度,h(x)的就是当前点原创 2015-10-28 20:58:28 · 432 阅读 · 0 评论 -
Poj 3487 稳定婚姻问题
稳定婚姻问题:有n个男人,n个女人。每个人都有一个对异性的排名(1~n),假设男人主动追求女人,根据这些排名,我们需要将这些男女进行牵线,使得他们的婚姻稳定。 由于稳定不太好定义,我们定义一下不稳定。不稳定婚姻:对于任意一个男人m, 假设其当前配偶为w, 若存在一个女人w1, 其当前配偶为m1, 她在m 的排名中比 w 靠前,同时,m在 w1 的排名中比她现任丈夫m1靠前,这原创 2015-09-09 21:00:55 · 1712 阅读 · 0 评论 -
树的中心
讲解的方法是按照我自己的理解来的,有任何没有说清楚的地方欢迎提问。-----------------------------------------------------------------------------------------------------网上将有关的题目不少,但是详细讲这个算法的人不多。自己对着代码琢磨了一下,对这个算法讲一讲自己的理解。首先,我们需要明白原创 2015-09-12 17:39:08 · 1642 阅读 · 0 评论 -
poj3259 Wormholes BellmanFord或SPFA
今天学了一下BellmanFord算法(它也是一个求单元最短路的算法),它和不使用优先队列的Dijkstra算法复杂度差不多,但是它可以处理带有负边权的图。算法实现很简单:给定图G=(V, E), |V| = N。 (1)我们对所有边进行N-1次松弛操作可以得到源点到所有点的最短距离。(2)再对所有边进行一次松弛操作,判断是否存在负环,如果存在负环,则从S到所有点的最短距离不存在,否则求解完毕原创 2015-10-25 22:11:21 · 410 阅读 · 0 评论 -
poj3114 Countries in War 强连通分量+dijkstra或者DAG最短路
思路:先求出各个强联通分量,缩点,由于国家内部通信的不需要时间的,一个国内的某个城市和另一个国家内的某个城市通信等价与两个国家之间通信。之后就是一套最短路的东西了,由于缩点之后是DAG,所以可以用DAG的最短路来求,但事实证明这个没有堆优化的dijkstra快。#include#include#includeusing namespace std;const i原创 2015-11-10 16:34:10 · 369 阅读 · 0 评论 -
poj 2186 Popular Cows Kosaraju求强连通分量
题意:有一群牛,每对牛之间可以有崇拜关系,同时,崇拜关系满足传递性。问被除自己以外的所有牛崇拜的牛有多少头?第一次做强连通分量的题。这道题想想其实很简单。思路:先按题意建图,显然,每个强联通分量中的牛都是相互崇拜的,所以我们把所有强连通分量找出来,然后把它们都看成一个点。两个强连通分量之间如果存在边,则必存在边(V1,V2)∈E,其中V1∈强连通分量1, V2∈强连通分量2。点有了原创 2015-11-04 21:34:43 · 447 阅读 · 0 评论 -
二分图匹配入门
之前大一的时候有学姐讲过二分图匹配的匈牙利(Hungrain)算法,当时没理解。最近想补补图论,学习一下二分图匹配的匈牙利算法,其实挺简单的。先弄清二分图匹配时重要的几个概念:(1)交替路:从一个未匹配的顶点出发,依次经过未匹配边,匹配边...,这样由匹配边,非匹配边交替形成的路称为交替路。一定先理解这个概念,才能理解增广路的概念。(2)增广路:从一个未匹配的顶点出发,沿交替路走,到达原创 2015-09-09 20:39:54 · 1130 阅读 · 0 评论