无向图割点桥与块
Dan__ge
Today is difficult,tomorrow is more difficult,but the day after is beautiful.
展开
-
HDU 4587 割点
点击打开链接题意:给一个无向图,可能是不连通的,问删除两个点之后联通块最多的数量,两个点随意思路:之前写过一个删除一个点的剩余联通块的题目,和这个差不多嘛,但是要注意细节,WA了10多次,对于一个5000个点和5000条边的图来说,我们可以先去枚举删除一个点,然后剩下的操作就和删除一个点的相同了我们找到最大的cnt,cnt记录的是这个点删除后的联通块个数-1;具体细节看代码把,注意这种情况原创 2016-05-11 11:01:48 · 948 阅读 · 0 评论 -
POJ 2942 点双联通+二分图染色
点击打开链接题意:给n个骑士和m对关系,关系是互相仇恨,现在召开一个圆桌会议,要求相邻的两个人不能有仇恨关系,问有多少骑士不管怎么分配都不能参加会议思路:白书上的经典例题#include #include #include #include #include #include #include using namespace std;typedef long long ll原创 2016-08-17 11:45:43 · 422 阅读 · 0 评论 -
HDU 4005 边双联通分量
点击打开链接题意:给一个无向图,然后这个图可以加一条边,现在要求你剪断一条边,使得图不连通,问你剪的这条边的最小费用思路:先将大牛的思路贴出点这里,首先要缩点肯定是没问题的,然后我写了一个多于的树的直径,就是判断这个树是不是一条链(多于的一步),多于缩完点后的这个树,每条边都有一个权值,现在敌人为了使得我们的花费最大,那么他一定是尽量将小的边都连在一起,那么可以先找的最小费用的边,这条边一原创 2016-08-01 10:46:43 · 492 阅读 · 0 评论 -
HDU 3849 双联通+Trie树+并查集
点击打开链接题意:给了n个人和m个关系,然后找出所有的桥并输出思路:简单的找桥就行了,然后人的编号就可以用Trie树来完成,最后坑点如果图不连通输出0,联通性用并查集就行了#include #include #include #include #include #include using namespace std;typedef long long ll;typedef原创 2016-07-29 19:24:14 · 458 阅读 · 0 评论 -
HDU 2242 强联通分量+树形DP
点击打开链接题意:中文思路:题目说切掉一条边使得图分成两部分,也就是割边,那么边双联通模版套入,正好就可以缩点,然后在缩过的图上删除一条边满足题目要求,当然的是若没有割边,就输出impossible就行了,然后树形DP计算出每个点的所有儿子节点的权值即可,计算出最小的值 PS:写的时候以为联通块的编号就是按照块数排下来的,其实不一定,也可能是模版的问题#include #includ原创 2016-07-27 21:13:53 · 1085 阅读 · 0 评论 -
ACdream 1415 最短路+桥
点击打开链接题意:给个图,问你从1到n的最短路的路径上,有多少桥思路:先是要满足条件最短路,然后判断每条边是不是最短路里的边,怎么判断也很简单,先从1开始求最短路和从n开始求最短路,对于边U到V来说,若1到U的最短路加上n到V的最短路在加上这条边的权值若等于1到n的最短路,那么这条边就是我们要的,就是这个条件if(dis1[U[i]]+COST[i]+dis2[V[i]]==maxdis|原创 2016-06-19 15:13:05 · 1692 阅读 · 0 评论 -
POJ 1515 双联通分量
点击打开链接题意:给一个联通的无向图,然后问你将其中的边变为有向的,加边使其变成有向的联通图思路:若无向图有双联通分量,那么这个分量里的元素可以变成有向图的强联通,这应该很好看出来,然后需要加的边是什么呢,就是这个图上的桥呗,是桥的话变成有向的就要加一条边,然后剩下的无向图的双联通分量可以用dfs搜一下,边搜边输出就可以了,将桥记录下来遇到桥的时候特殊处理一下,然后双联通分量里的边每一条只原创 2016-05-31 15:44:39 · 2497 阅读 · 0 评论 -
HDU 4612 双联通分量+树的直径
点击打开链接题意:给一个无向联通图,里面可能有重边,问添加一条边后,使得图中的桥最小,将桥的数量输出思路:刚刚读完题,就有了思路去写,无非就是将联通图双联通分量后缩点,然后求一条最长的路,首尾相连,肯定将更多的桥包含使得这些桥不再是桥,很好想的题,但是错了20+什么鬼,md重边这么难处理,醉了~~~,之前的做法是将重边全部找出来,希望数据弱点水过去算了,TLE好样的,那么我们在处理桥的时候原创 2016-05-05 11:42:01 · 3626 阅读 · 0 评论 -
HDU 4738 双联通分量
点击打开链接题意:给出一个无向图和每条边的权值,现在破坏一条路使得图不再联通,只能破坏一条路,问最少需要的花费,花费为边上的权值,注意的是,图刚开始可能不连通,输出1;花费最小的边为0输出1,其他没什么了思路:求桥的模版题,在找到一个桥时更新费用最小,对了还有一个可能有重边,简单~~~#include #include #include #include #include原创 2016-05-04 19:40:00 · 4064 阅读 · 0 评论 -
POJ 3352 边双联通
点击打开链接题意:题目很长不说了,就是求加几条边后,任意删除一条边后,图还是联通的思路:边双联通分量的定义就是删除一条边后图仍联通,这里推荐这篇点这里写的很详细,而这题就是推荐文章中的构造双联通图中桥的方法,那么我们直接引用,证明看那篇文章把,对于一个联通图,我们求出所有桥,求桥的方法与割点类似,都是求出low和dfs数组完成,我的代码中是L和E数组,将桥删除后的图肯定是多个联通块,而每个原创 2016-05-04 11:26:16 · 1035 阅读 · 0 评论 -
ZOJ 2588 求桥的数量
点击打开链接题意:将无向图中的桥找出来,并将他们的输入序号输出思路:模版找桥,但是注意处理重边和后面的输出,别的没什么了,模版题#include #include #include #include #include #include using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;con原创 2016-05-04 15:45:36 · 2865 阅读 · 0 评论 -
POJ 1523 无向图割点
点击打开链接题意:给出无向图,问你哪些是割点并输出将这个点割掉后的图分为几块思路:无向图割点的模版题,只不过再将cnt里的值输出而已#include #include #include #include #include #include using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;原创 2016-05-03 19:00:46 · 3768 阅读 · 0 评论 -
POJ 1144 无向图割点模版题
点击打开链接题意:给出一个无向图及边的关系,求割点个数思路:无向图割点纯模版,不多说,这篇写的很好理解点这里#include #include #include #include #include #include using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const int max原创 2016-05-03 17:41:50 · 4153 阅读 · 0 评论 -
codeforces 732F 双联通分量
点击打开链接题意:给一个无向图,现在将所有的边变为有向,使得每个点可以到达的点的个数的最小值最大,然后将变好的有向图输出思路:可以知道无向图时在一个连通分量中的点是可以做到互达的,也就是这个联通分量里的点可以变成有向的联通分量,那么现在的图就是一个由好多个连通分量组成的一个树,然后对于割边来说,只有确定它的方向才能找出那个最小值,因为割边为有向了,所以所有的联通块肯定都是指向最大的那个联通原创 2016-11-23 13:19:58 · 760 阅读 · 0 评论