
强连通
文章平均质量分 79
lp_opai
我没有时间写一封简短的信,所以我写了一封长的。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu Exploration (并查集 拓扑 强连通)
首先对于所有的无向边,我们使用并查集将两边的点并起来若一条边未合并之前,两端的点已经处于同一个集合了,那么说明必定存在可行的环(因为这两个点处于同一个并查集集合中,那么它们之间至少存在一条路径)如果上一步没有判断出环,那么仅靠无向边是找不到环的考虑到,处于同一个并查集集合中的点之间必定存在一条路径互达,因此将一个集合的点合并之后,原问题等价于在新生成的有向图中是否有环我们知道,有向无环图必原创 2015-05-07 20:36:49 · 431 阅读 · 0 评论 -
树的直径 (树上的最长路)
树的直径(Diameter)是指树上的最长简单路。直径的求法:两遍BFS (or DFS)任选一点u为起点,对树进行BFS遍历,找出离u最远的点v以v为起点,再进行BFS遍历,找出离v最远的点w。则v到w的路径长度即为树的直径*简单证明于是原问题可以在O(E)时间内求出关键在于证明第一次遍历的正确性,也就是对于任意点u,距离它最远的点v一定是最长路的一端。如果u在最转载 2015-05-02 09:25:52 · 962 阅读 · 0 评论 -
hdu Proving Equivalences (强连通缩点)
/*给你一个有向网络图,问,至少加多少条边能使这个图成强连通思路:可以用tarjan算法求出求出有向图的强连通分量,并进行染色,然后在缩点,缩点的好处就是把原本杂乱的有向图变成有向无环图。。。然后统计入度为0的点和出度为0的点,取其较大值就是所求的要求添加的最少的边的条数了。*/# include # include # include # include #include原创 2015-05-09 16:00:24 · 431 阅读 · 0 评论 -
hdu1269 迷宫城堡 (强连通模板)(有向图)
///题意当强连通分量为1的时候输出Yes否者输出No。 两两可达# include# include# include# include# includeusing namespace std;# define MAXN 10005 ///题目中可能的最大点数# define MAXM 100005 ///边数struct Edge{ int v,next;} ed原创 2015-05-01 20:59:55 · 425 阅读 · 0 评论 -
hdu 4635 Strongly connected (强连通缩点)
/*题意:给你一个有向图,问你最多能添加多少条边使得这个图依然不是强联通的。做法:1,求出图中的所有强连通分量2,把上述的强连通分量缩成一个点。3,问题现在变成问一个完全图,最少需要去除多少条边使得这个图不强联通,那么肯定是去除所有强联通分量中含有点数最少的点的所有进边。*/# include # include # include # include #includ原创 2015-07-30 19:38:25 · 401 阅读 · 0 评论 -
hdu 5438 Ponds(强连通)
/*拓扑+强联通题意: 有n个池塘 m条管道连接 把连接管道小于2的池塘删掉 剩下的连通分量为奇数的池塘相加为多少 先拓扑删边+强连通判断奇偶*/# include # include # include # include # include # include using namespace std;const int MAXN = 20原创 2015-09-13 18:25:41 · 536 阅读 · 0 评论