
强连通分量
文章平均质量分 71
Aerolite坠落
这个作者很懒,什么都没留下…
展开
-
HDU 1269 迷宫城堡(强连通分量)
题目地址:HDU 1269强连通分量裸题。。只要判断是否只有一个强连通分量就可以。代码如下:#include #include #include #include #include #include #include #include #include #include #include using namespace std;int head[20000],原创 2014-08-25 15:32:11 · 966 阅读 · 0 评论 -
POJ 1904 King's Quest (强连通分量)
题目地址:POJ 1904 很神奇的一道题啊。至于详解看这篇博客吧,传送门写的非常详细。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <algorithm>#include <stdlib.h>#include <map>#include <set>#in原创 2015-03-20 20:35:51 · 931 阅读 · 0 评论 -
POJ 3177 Redundant Paths (双连通)
题目地址:POJ 3177找出各个双连通分量度数为1的点,然后作为叶子节点,那么ans=(叶子结点数+1)/2。需要注意的是有重边。代码如下:#include #include #include #include #include #include #include #include #include using namespace std;#define LL l原创 2015-03-11 17:40:08 · 832 阅读 · 0 评论 -
HDU 2242 考研路茫茫——空调教室 (双连通分量+树形DP)
题目地址:HDU 2242先用双连通分量缩点,然后形成一棵树,然后在树上做树形DP,求出每个点的子树和。然后找最小值即可。需要注意一下重边的问题,第一次返回父节点时可以忽略,因为这是反向边,然后之后再返回的时候就不是反向边了。不能忽略了。代码如下:#include #include #include #include #include #include #include原创 2015-03-12 09:46:21 · 1429 阅读 · 0 评论 -
POJ 2375 Cow Ski Area (强连通分量)
题目地址:POJ 2375对每个点向与之相邻并h小于该点的点加有向边。然后强连通缩点。问题就转化成了最少加几条边使得图为强连通图,取入度为0和出度为0的点数的较大者即可。注意,当强连通分量只有一个的时候,答案是0,而不是1.代码如下:#include #include #include #include #include #include #include #includ原创 2015-03-12 19:05:57 · 934 阅读 · 0 评论 -
POJ 2186 Popular Cows (强连通分量)
题目地址:POJ 2186先用强连通分量缩点,然后形成一棵树。我第一次用的判定条件是入度为分量数-1。虽然这种情况下确实正确。但是在树中也是有间接关系的。这个条件并不是充分必要条件。正确的做法是逆序建树,然后找根结点。而且根结点有且只有一个才可以。所以转化成了找出度为0的分量。代码如下:#include #include #include #include #include原创 2015-03-12 16:08:31 · 699 阅读 · 0 评论 -
POJ 2553 The Bottom of a Graph (强连通分量)
题目地址:POJ 2553题目意思不好理解。题意是:G图中从v可达的所有点w,也都可以达到v,这样的v称为sink。然后升序输出所有的sink。对于一个强连通分量来说,所有的点都符合这一条件,但是如果这个分量还连接其他分量的话,则肯定都不是sink。所以只需要找出度为0的强连通分量即可。代码如下:#include #include #include #include #in原创 2015-03-12 15:29:12 · 950 阅读 · 0 评论 -
POJ 2762 Going from u to v or from v to u?(强连通分量+拓扑排序)
题目地址:POJ 2762 先缩点,然后判断拓扑网络每层的个数是否为1(我承认如果事先不知道这题需要拓扑排序我是想不出来这点的。。。)。因为假如有一层为2的话,那么从此之后这两个岔路的点就不可能从一点到另一点的。 代码如下:#include <iostream>#include <string.h>#include <math.h>#include <queue>#include <al原创 2015-03-13 20:33:38 · 950 阅读 · 0 评论 -
Codeforces Round #Pi (Div. 2) E. President and Roads (最短路+强连通求割边)
题目地址:codeforces #pi (DIV2) E 题目很水。。就是先求两边最短路,然后把可能为最短路的边挑出来,然后判断是否yes只需要转化成无向图跑一遍tarjan,找出割边,割边就是yes,然后剩下的边就让它的值为最短路-1就行了,如果-1后变成了非正数,就是no. 但是!!!居然卡spfa!!那是不是说cf以后就不能用可以卡的算法了。。完全可以出组数据来卡这些算法。。。比如spfa原创 2015-08-07 15:43:53 · 964 阅读 · 2 评论 -
HDU 3639 Hawk-and-Chicken (强连通分量+树形DP)
题目地址:HDU 3639先用强连通分量缩点,缩点之后,再重新按缩点之后的块逆序构图,每个块的值是里边缩的点的个数,那么得到选票的最大的一定是重新构图后入度为0的块,然后求出来找最大值即可。代码如下:#include #include #include #include #include #include #include #include #include usin原创 2015-03-06 19:41:19 · 1146 阅读 · 0 评论 -
HDU 3072 Intelligence System (强连通分量)
题目地址:HDU 3072这题一开始理解错题目意思了。。(不得不吐槽一下题目意思确实不好理解。。)用的强连通+最小生成树做的。。。然后错了好多遍。。。sad。。题目意思是从一个给定点向其他所有点通信的最少花费,那么入度为0的点肯定是那个给定点。然后对于其它点,枚举就好了。找一个到他花费最少的点的花费。代码如下:#include #include #include #include原创 2015-02-22 22:43:09 · 1139 阅读 · 0 评论 -
HDU 1827 Summer Holiday (强连通分量)
题目地址:HDU 1827先缩点,缩完点后,找出入度为0的块就是需要传递的块。然后用块中花费最少的来当代表块中的花费。累加起来就行了。代码如下:#include #include #include #include #include #include #include #include #include using namespace std;#define LL原创 2015-02-22 22:35:32 · 994 阅读 · 0 评论 -
ZOJ 2588 Burning Bridges(无向连通图求割边)
题目地址:ZOJ 2588因为数组开小了而TLE了。。这题就是一个求无向连通图最小割边。只要判断dfn[u]是否代码如下;#include #include #include #include #include #include #include #include #include #include #include using namespace std;i原创 2014-08-25 22:48:09 · 1147 阅读 · 0 评论 -
POJ 1523 SPF(无向图连通分量求割点)
题目地址:POJ 1523这题猛的一看。。貌似有点难的样子。不过仔细一想,那个每个割点所分成一次子图不就都能找到这个割点一次吗,那么只要记录下它作为割点的次数再+1不就行了。也算是求割点的裸题吧。这个题的输出很坑。。。需要注意一下。。代码如下:#include #include #include #include #include #include #include #i原创 2014-08-26 10:58:10 · 948 阅读 · 0 评论 -
codeforces #427C Checkposts(强连通缩点)
题目地址:http://codeforces.com/problemset/problem/427/C强连通缩点模板题。。想要设置站点最少,那就每个强连通块只放一个就可以了,要使总花费数最少,就每个强连通块取花费最少的区域。计算方法数的时候,只需要计算每个块最少的区域可选的个数乘起来就可以了。代码如下:#include #include #include #include #i原创 2014-09-10 15:26:46 · 1508 阅读 · 0 评论 -
HDU 2767 Proving Equivalences(强连通分量)
题目地址:HDU 2767这题的意思是求再加多少边可以使得图为强连通图。方法是先缩点,缩点很简单,只要加个数组,在找到一个强连通分量的时候让那些点都标记为该强连通分量的标号即可。然后再遍历一遍所有边,如果该边的起点和终点不在同一个强连通分量里边,那这两个点的入度和出度就可以算作是该强连通分量的入度和出度的一部分,累加上去。最后分别统计入度和出度为0的强连通分量个数,取最大值就是答案。道原创 2014-08-25 17:02:11 · 846 阅读 · 0 评论 -
POJ 1236 Network of Schools(强连通分量)
题目地址:POJ 1236这个题的大意是求最少往多少点发送消息可以使任意一个点都能收到消息和最少增加多少条边可以使图为连通图。对于第一个问题,可以求入度为0的强连通块的块数,因为只有入度为0的强连通块是无法从外界接受信息的,而只要有一个入度的话,那整个连通块就都可以接收到信息。第二个问题则是求入度为0的强连通块与出度为0的强连通块的个数的最大值。代码如下:#include #incl原创 2014-08-25 19:33:40 · 814 阅读 · 0 评论 -
POJ 1144 Network(无向图连通分量求割点)
题目地址:POJ 1144求割点。判断一个点是否是割点有两种判断情况:如果u为割点,当且仅当满足下面的1条1、如果u为树根,那么u必须有多于1棵子树2、如果u不为树根,那么(u,v)为树枝边,当Low[v]>=DFN[u]时。然后根据这两句来找割点就可以了。代码如下:#include #include #include #include原创 2014-08-26 10:14:04 · 1794 阅读 · 2 评论 -
POJ 3352 Road Construction(无向连通图)
题目地址:POJ 3352这题就是求最少加多少条边可以使得图为无向双连通图。方法是找度数为1的连通分量,可以只用low来找。然后根据公式(叶子结点数+1)/2即可得到答案。原因是在图中将每两个度数为1的都连起来,度数为2的显然已经可以形成双联通了,因为是无向边,只要加一条,就相当于加了两条有向边,很显然,结果数就是那个公式。代码如下:#include #include #inclu原创 2014-08-26 17:04:50 · 885 阅读 · 0 评论 -
HDU 3861 The King’s Problem (强连通+二分匹配)
题目地址:HDU 3861这题虽然是两个算法结合起来的。但是感觉挺没意思的。。结合的一点也不自然,,硬生生的揉在了一块。。。(出题者不要喷我QAQ。)不过这题让我发现了我的二分匹配已经好长时间没用过了。。都快忘了。。正好在省赛之前又复习了一下。代码如下:#include #include #include #include #include #include #incl原创 2015-02-22 22:21:40 · 924 阅读 · 0 评论 -
Codeforces Round #286 (Div. 1) B. Mr. Kitayuta's Technology (强连通分量)
题目地址:http://codeforces.com/contest/506/problem/B 先用强连通判环,然后转化成无向图,找无向图连通块,若一个有n个点的块内有强连通环,那么需要n条边,即正好首尾相连形成一条环,那么有了这个环之后,在这个块内的所有要求都能实现。如果没有强连通环,那么就是一棵树,那么只需要n-1条边即可。 代码如下:#include <iostream>#includ原创 2015-08-18 10:36:08 · 1020 阅读 · 0 评论