概要:各种dfs时间戳。。全是tarjan(或加上他的小伙伴)无限膜拜tarjan orzzzzzzzzz技巧及注意:强连通分量是有向图,双连通分量是无向图。强连通分量找环时的决策和双连通的决策十分相似,但不完全相同。强连通分量在if(FF[v])后边的else if还要特判是否在栈里,即vis[v...
分类:
其他好文 时间:
2014-10-01 19:11:11
阅读次数:
190
题目链接
题意:给出一张有向图,求一个结点数最大的结点集,使得该结点集中任意两个结点u和v满足:要么u可以到到v,要么v可以到达u(u和v可以互相到达)
思路:我们可以缩点,用Tarjan求出所有强连通分量,让每个SCC的权值等于它的结点个数。由于SCC图是有一个DAG,使用DP求解。
代码:
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-09-28 13:47:32
阅读次数:
153
题目链接
题意:证明n个命题全部等价,已经给出m此推导,求至少还要几次推导才能完成整个证明。
思路:可以将命题看作结点,推导看作有向边,则本题就能转化为n个结点m条边的有向图。利用tarjan算法得到所有强连通分量,将这些强连通分量当作一个点,得到一个DAG。之后就可以求次数了。注意当强连通数量为1时,就代表着证明已经完成了。
代码:
#include
#incl...
分类:
其他好文 时间:
2014-09-28 10:31:52
阅读次数:
166
树的定义:连通无回路的无向图是一棵树。有关树的问题:1、最小生成树。2、次小生成树。3、有向图的最小树形图。4、LCA(树上两点的最近公共祖先)。5、树的最小支配集、最小点覆盖、最大独立集。一、最小生成树解决的问题是:求无向图中边权值之和最小的生成树。算法有Kruskal和Prim。Kruskal使...
分类:
其他好文 时间:
2014-09-27 20:08:50
阅读次数:
285
题意: 最少需要几个点才能使得有向图中1->n的距离大于k。分析: 删除某一点的以后,与它相连的所有边都不存在了,相当于点的容量为1。但是在网络流中我们只能直接限制边的容量。所以需要拆点来完成对的点容量的限制。对于边i -> j,先建边i ->i',再建i'->j。i ->i'只能建一次,容量为.....
分类:
其他好文 时间:
2014-09-26 23:45:28
阅读次数:
310
说说:
这道题的题意很简单,就是给你一些单词,问是否能形成一个句子,使前一个单词的最后一个字母等于后一个单词的第一个字母。本质上来说就是有向图的欧拉路问题,当然存在欧拉回路也是OK的。一开始的时候,我以为存在欧拉路只需判断两种情况:一,是存在欧拉回路,即每个节点的入度等于出度。二,存在欧拉路,有且仅有一个节点的入度比出度大一,一个节点的出度比入度大一。只要满足任意其中一种情况即可。事实上不是这样...
分类:
其他好文 时间:
2014-09-25 23:43:38
阅读次数:
174
题目地址:HDU 2254
必须得吐槽一下。。这题的数据是又弱又坑。。样例不过都能AC。。还有。。居然还有重边。。WA了一晚上。。
吐槽完毕,言归正传。。
根据离散数学里面的可达矩阵的性质,我们知道一个有向图的邻接矩阵的前n次幂的和即为可达矩阵,那么要求[t1-t2]之内的路径的条数,因为题目说了t1 = 0的时候为0。那么假设邻接矩阵为A,那么要求的就是A^(t1-1)+A^(t1)+.....
分类:
其他好文 时间:
2014-09-25 22:39:38
阅读次数:
136
用十字链表结构写的,根据数据结构书上的描述和自己的理解实现。但理解的不透彻,所以不知道有没有错误。但实验了几个都ok.#include #include using namespace std;//有向图十字链表表示#define MAX_VERTEX_NUM 20typedef struct Ar...
分类:
其他好文 时间:
2014-09-25 17:40:59
阅读次数:
188
UVA 1486 - Transportation
题目链接
题意:一个有向图上运输k货物,有一些边,每个边一个系数a,经过该边如果有x货物,就要缴纳a
x x的钱,问运输从1到n最小的代价
思路:费用流,这题边的容量c最大只有5,所以可以拆边,一条边拆成c条边,每条容量1,对应相应的代价为a * (i^2 - (i - 1)^2),然后跑一下费用流即可
代码:
...
分类:
其他好文 时间:
2014-09-25 16:41:49
阅读次数:
244
39.(树、图、算法)(2).求一个有向连通图的割点,割点的定义是,如果除去此节点和与其相关的边,有向图不再连通,描述算法。思路:这里有个问题,对于图的连通性,我默认它要求强连通。采用了最简单的办法,即每次删掉一条边,判断图还是否连通。若变得不连通了就认为此点是割点。连通性的判断也采用了直觉上简单的...
分类:
其他好文 时间:
2014-09-25 10:47:48
阅读次数:
411