题意:求一条边使得加入这条边以后的消除的桥尽量多。在同一个边双连通分量内加边肯定不会消除桥的,求边双连通分量以后缩点,把桥当成边,实际上是要选一条最长的链。缩点以后会形成一颗树,一定不存在环否则和桥的定义矛盾,求树上的最远点对。树上的最远点对用dpT了,实际上两次dfs就行了,第一次随便选一个点df...
分类:
Web程序 时间:
2015-09-03 19:13:54
阅读次数:
207
边双连通分量+并查集这题算是水过去的吧,4500ms。应该有更好的写法#include#include#include#include#includeusing namespace std;const int maxn = 100000 + 10; //结点数量const int Maxn = 2 ...
分类:
Web程序 时间:
2015-09-01 12:25:55
阅读次数:
183
题意读懂了就好做了,就是求一下点双连通分量。维护一下一颗子树的结点数,对于一个结点当u是割点的时候,统计一下u分割的连通分量v,每得到一个连通分量的结点数cnt(v)和之前连通分量结点数sum相乘一下就好。最后加一下和u的子树上的连通分量总数和其它的结点的乘积。B,C中其中一者可以是A,所有最后还要...
分类:
其他好文 时间:
2015-08-30 15:47:00
阅读次数:
104
边双连通分量+缩点#include#include#include#include#includeusing namespace std;const int maxn = 10000 + 10; const int Maxn = 2 * 100000 + 10; int low[maxn];int ...
分类:
其他好文 时间:
2015-08-28 22:55:30
阅读次数:
249
给出一个无向图,你可以加一条边,使得加上边之后的图割边数量最少。方法:每个边双连通分量缩点,形成一个树,树上的每条边都是割边,割边数量为S1;接下来只要算出树上最长路径(树的直径)就可以了,最长路径两段连线,路径上的割边都不可能再成为割边了,记最长路径长度为S2;Ans=S1-S2;第一步可以用Ta...
分类:
其他好文 时间:
2015-08-27 22:41:42
阅读次数:
130
题目链接:
poj2942
题意:
有n个人,可以开多场圆桌会议
这n个人中,有m对人有仇视的关系,相互仇视的两人坐在相邻的位置
且每场圆桌会议的人数只能为奇书
问有多少人不能参加
解题思路:
首先构图,将所有的仇视关系视为一条边,最后再取已经得到的图的逆图,
这样图上连接的边就代表可以相邻而坐的关系
然后就是找奇圈了,首先就是要...
分类:
其他好文 时间:
2015-08-19 16:49:04
阅读次数:
109
Knights of the Round Table
Time Limit: 7000MS
Memory Limit: 65536K
Total Submissions: 10908
Accepted: 3585
Description
Being a knight is a very attractive career: searc...
分类:
其他好文 时间:
2015-08-12 01:27:55
阅读次数:
154
题意就是至少加几条边,能够让原图没有桥。1. 首先要找出图G的所有【边双连通分量】。2、 把每一个【边双连通分量】都看做一个点(即【缩点】)3、 问题再次被转化为“至少在缩点树上增加多少条树边,使得这棵树变为一个双连通图”。首先知道一条等式:若要使得任意一棵树,在增加若干条边后,变成一个双连通图,那...
分类:
其他好文 时间:
2015-08-11 23:04:26
阅读次数:
76
思路就是求边双连通分量,然后缩点,再用树形DP搞一下。代码和求强连通很类似,有点神奇,=_=,慢慢消化吧 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 c...
分类:
其他好文 时间:
2015-08-11 18:23:49
阅读次数:
191
题目大意:给你一个无向图,问加一条边之后最少还剩下几座桥。(注意重边处理)分析:其实当我们把边双连通分量给求出来之后我们就能将连通块求出来,这样我们就可以重新构图。重新构造出来的图肯定是一颗树了,那么问题就转化为求树的哪两个节点的距离最长。我们可以随便找一个点S开始BFS, BFS到这个点最远的那个...
分类:
其他好文 时间:
2015-08-10 19:25:41
阅读次数:
133