给一张有向图G, 求一个结点数最大的结点集,使得该结点集中任意两个结点u和v满足,要么u可以到达v, 要么v可以到达u(u和v相互可达也可以)。因为整张图可能存在环路,所以不好使用dp直接做,先采用有向图的强连通分量,进行缩点,然后得到一个有向无环图(DAG) 在采用记忆话dp 去做即可#inclu...
分类:
其他好文 时间:
2015-03-06 16:56:55
阅读次数:
121
---恢复内容开始---引自: http://www.cnblogs.com/luweiseu/archive/2012/07/14/2591370.htmlKosaraju算法Kosaraju算法的解释和实现都比较简单,为了找到强连通分支,首先对图G运行DFS,计算出各顶点完成搜索的时间f;然后计...
分类:
其他好文 时间:
2015-02-08 16:49:23
阅读次数:
239
数据结构【数据结构】DFS求有向图的强连通分量【数据结构】二叉堆【数据结构】离散事件模拟【数据结构】book3_3 表达式求值3.19【数据结构】红黑树 C语言代码
分类:
其他好文 时间:
2015-01-02 14:40:29
阅读次数:
130
题目链接
题意:一个有向图,每对一个结点操作,就可以触发连锁反应,使得该结点及它直接或间接指向的点均获得标记,问至少需要操作多少个结点使得所有结点获得标记
思路:有向图的强连通分量,用Tarjan缩点之后找出入度为0的点的个数,即为答案。跟UVA11504一样的题目。
UVA11504
代码:
#include
#include
#include
#...
分类:
其他好文 时间:
2014-10-17 16:57:26
阅读次数:
169
题目链接
题意:多米诺骨牌的游戏,给出一些牌,以及哪张牌倒了之后会推倒哪张牌,求最少的推倒牌的张数,使得所有牌都倒下去。
思路:有向图的强连通分量,用Tarjan缩点之后找出入度为0的点的个数,即为答案。
代码:
#include
#include
#include
#include
using namespace std;
const int MAXN...
分类:
其他好文 时间:
2014-10-17 00:24:43
阅读次数:
225
题目链接
题意: 给定一张有向图,找出所有强连通分量,并输出。
思路:有向图的强连通分量用Tarjan算法,然后用map映射,便于输出,注意输出格式。
代码:
#include
#include
#include
#include
#include
using namespace std;
const int MAXN = 2000;
const in...
分类:
其他好文 时间:
2014-10-16 19:41:33
阅读次数:
210
用十字链表结构写的,根据数据结构书上的描述和自己的理解实现。但理解的不透彻,所以不知道有没有错误。但实验了几个都ok.#include #include using namespace std;//有向图十字链表表示#define MAX_VERTEX_NUM 20typedef struct Ar...
分类:
其他好文 时间:
2014-09-25 17:40:59
阅读次数:
188
由于本蒟蒻太弱...刷到这题才知道有向图的强连通分量这种算法(?类型?)之前用并查集敲了一下,结果无限WA.....然后看了下vj的题解,翻了翻大白书赶紧学了一下【orz...先留个坑在这,晚上还要考生物,我得先抱下佛脚,回来再写】
分类:
其他好文 时间:
2014-08-31 18:24:51
阅读次数:
177
1 /* 2 题目大意:有N个cows, M个关系 3 a->b 表示 a认为b popular;如果还有b->c, 那么就会有a->c 4 问最终有多少个cows被其他所有cows认为是popular! 5 6 思路:强连通分量中每两个节点都是可达的! 通过分...
分类:
其他好文 时间:
2014-08-06 18:53:52
阅读次数:
311
hdu1269 迷宫城堡
验证给出的有向图是不是强连通图。。。
Tarjan算法板子题
Tarjan算法的基础是DFS,对于每个节点、每条边都搜索一次,时间复杂度为O(V+E)。
算法步骤:
1、搜索到某一个点时,将该点的Low值标上时间戳,然后将自己作为所在强连通分量的根节点(就是赋值Dfn=Low=time)
2、将该点压入栈。
3、当点p有与点p’相连时...
分类:
其他好文 时间:
2014-08-03 23:22:56
阅读次数:
283