http://poj.org/problem?id=3177 明显要求桥的一道题。 (因为有桥就说明只能从那一条路走,换句话说就是只有一种方法) 求完桥后按照结论(加几条边成双连通图的结论,不会请baidu)就可以输出ans啦! (为此学了一下新的桥的求法……原来的那个常数太大了) ...
分类:
其他好文 时间:
2017-11-16 20:49:19
阅读次数:
123
一:有向图:dfs中,不需要记录pre,但是要instack标记,从而过滤‘横边’,如4-->5; void dfs(int u) { instk[u]=1; q[++head]=u; dfn[u]=low[u]=++times; for(int i=Laxt[u];i;i=Next[i]){ in ...
分类:
其他好文 时间:
2017-11-07 14:35:17
阅读次数:
138
Caocao's Bridges Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5595 Accepted Submission(s): 175 ...
分类:
其他好文 时间:
2017-11-06 22:41:47
阅读次数:
164
Because of the financial crisis, a large number of enterprises go bankrupt. In addition to this, other enterprises, which have trade relation with the ...
分类:
其他好文 时间:
2017-10-28 19:48:08
阅读次数:
193
题意:有一群骑士要坐在一个圆形的桌子上,他们之间有些人相互讨厌,所以不能挨着,要求算出一次也不能坐在桌子上的人,每次会议桌子必须奇数个人,一个人不能开会 题解:可以先建一个补图,要满足题目条件我们只要找出所有奇圈(奇数个点的环),求出点-双联通分量,对于每一个单独的点-双连通分量,如果它一定是一个奇 ...
分类:
移动开发 时间:
2017-10-28 17:44:33
阅读次数:
237
题意:求出所有的割顶,而且还有输出该割顶连接了几个点双连通分量 题解:直接tarjan求点双联通分量就好了,可以在加入边的时候记录加入次数,大于1的都是桥,输入输出很恶心,注意格式 #include<map> #include<set> #include<list> #include<cmath> ...
分类:
移动开发 时间:
2017-10-28 15:31:35
阅读次数:
209
题意:先给了一张无向图,然后依次加边,每次求桥的数量 题解:先用一次tarjan,我们可以标记桥的位置和记录桥的数量同时记录fa数组,然后更新边的时候我们可以用lca,因为在tarjan缩点之后得到了一颗树,当连接a,b节点时,可以直观的看出从a,b的最近公共祖先到a,b之间所有的桥都会消失,我们可 ...
分类:
其他好文 时间:
2017-10-28 11:26:19
阅读次数:
115
题意和poj3352一样。。唯一区别就是有重边,预先判断一下就好了 #include<map> #include<set> #include<list> #include<cmath> #include<queue> #include<stack> #include<vector> #include ...
分类:
其他好文 时间:
2017-10-27 22:03:12
阅读次数:
183
前言:关于如何求双连通分量,我们可以在tarjan搜索时标记下所有桥的位置(双连通分量(可以认为是没有桥的无向图图)即可通过删去所有桥得到),那么怎么找桥呢,对于每一条搜索到的边u->x,如果low【u】>dfn【x】则说明u不能通过子图到达比x更早的节点,那么就说明该边是桥 题意:把一个无向图变成 ...
分类:
其他好文 时间:
2017-10-27 19:52:29
阅读次数:
150
传送门 题意: 给出一个无向图,要求将每条边确定一个方向,使新图中所有点能到达的点的数目最小值最大。 考虑求出边双连通分量和割边,在缩点后的图中,我们贪心的令每一条割边指向点数目最多的边双。 对于每一个边双,我们可以用dfs确定边的方向使其在新图中变成连通分量。 最小值为点数最多的边双的点数。 1 ...
分类:
其他好文 时间:
2017-10-21 14:23:06
阅读次数:
163