强连通—双连通—LCA—2-SAT
菜鸟起航
这个作者很懒,什么都没留下…
展开
-
hdu 4738 (双联通求桥)
2013 ACM/ICPC Asia Regional Hangzhou Online 题目大意:有n个岛,曹操在一些岛之间建了一些桥,每个桥上有一些士兵把守,周瑜只有一个炸弹只能炸掉一个桥,炸弹需要士兵 带过去,士兵的数量不能小于目标桥的守卫,求出最少要派出多少士兵。 比赛一开始yyf就跟我说第一题是联通题,把题意跟我说了一下,我就知道是双联通求桥,但原创 2013-09-16 12:46:49 · 1235 阅读 · 0 评论 -
poj 2186 (强连通缩点)
题意:有N只奶牛,奶牛有自己认为最受欢迎的奶牛。奶牛们的这种“认为”是单向可传递的,当A认为B最受欢迎(B不一定认为A最受欢迎),且B认为C最受欢迎时,A一定也认为C最受欢迎。现在给出M对这样的“认为...”的关系,问有多少只奶牛被除其本身以外的所有奶牛关注。 思路:既然有单向传递关系,那么关系图可能就形成了环,一个环内的奶牛互相认为。如果把这些环用一个点代替的话,建反图,就成了一个有向无环图了原创 2013-09-19 23:06:38 · 946 阅读 · 0 评论 -
poj 2942 (点双联通+判断二分图)
题意:亚瑟王要在圆桌上召开骑士会议,为了不引发骑士之间的冲突,并且能够让会议的议题有令人满意的结果,每次开会前都 必须对出席会议的骑士有如下要求: 1:相互憎恨的两个骑士不能坐在直接相邻的2个位置; 2:出席会议的骑士数必须是奇数,这是为了让投票表决议题时都能有结果。 现在给定准备去开会的骑原创 2013-09-23 17:58:12 · 1213 阅读 · 1 评论 -
poj 3352 (双联通缩点)
题意:给出一个无向联通图,求最少添加几条边让图是双联通图。 思路:先Tarjan缩点,(求出度数为1的双联通分量的个数+1)/2; #include #include const int N=1100; int dep[N],dfs[N],low[N],ans,idx,head[N],num; struct edge { int st,ed,nex原创 2013-09-24 10:06:27 · 895 阅读 · 0 评论 -
hdu 4612 (双联通+树形DP)
加一条边后最少还有多少个桥,先Tarjan双联通缩点, 然后建树,求出树的直径,在直径起点终点加一条边去的桥最多, #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #define N 200001 using namespace std; int原创 2013-07-31 18:51:38 · 863 阅读 · 0 评论 -
hdu 2242 (双联通+树形DP)
Tarjan双联通缩点后,建树,任选一点为根节点求出所有点的字节点的个数+1:m 然后求出n-m与m的差值,求出最小的 #include #include #include #define inf 0x3fffffff #define N 10001 using namespace std; int belong[N],dfs[N],low[N],idx原创 2013-08-01 11:55:03 · 847 阅读 · 0 评论 -
hdu 4635 (强连通缩点)
多校联赛4的一道题,,给一个有向图,问最多加多少条边后仍然不是强联通,以前总会遇到问最少加几条边让图成一个强连通图,比赛时自己就找到了答案,当时想着添加最多的边后一定是将原来的图连成两个强连通分量,而两个强连通分量间的边最多是两个联通分量的点数之积,再加上每个联通分量内部的点的边数就是所有的边数,再减去原来的边就是新加上的边了,把图强连通缩点后,求出每个出度或入度为0的联通分量为一个联通分量,剩余原创 2013-08-01 19:19:32 · 1005 阅读 · 0 评论 -
hdu 2460 poj 3694 (双联通+LCA)
在给出的两个点上加一条边,求剩下桥的数量,,不会LCA在线,就用了最普通的,先Tarjan双联通缩点,然后将缩完的图建成一棵树,树的所有边就是桥了,如果在任意两点间加一条边的话,那么从两点到最近公共祖先的所有边都不是桥了。。。。。。 #pragma comment(linker, "/STACK:10240000000000,10240000000000"原创 2013-08-02 09:48:59 · 1001 阅读 · 0 评论