关于图的删边之后连通性问题的一个有趣做法

jys posted @ Nov 14, 2013 04:07:38 PM in 未分类 , 2361 阅读

http://www.cppblog.com/MatoNo1/archive/2013/06/17/200747.html看到的

任取一个生成树。对于每条非树边,随机取一个ULL的值作为权值;对于每条树边,取所有覆盖了它的非树边的权值的异或和作为权值。

一个边集S,在删除S中的边后图刚好不连通的必要条件是S中边的权值的异或和为0.

一个边集S,在删除S中的边后图不连通的充要条件是存在一个S的子集S',删掉S'能使这张图刚好不连通。

多跑几次就可以以RP之名保证正确性。

这个方法好有趣。

类似的思想,可以用非树边给每个点一个权值。

割点割边可以不用tarjan了?

还可以出有意思的题目:给一张n<=1000个点m<=2000条边的图,求在图中删掉三条边使得图不连通的方案数。

删三条边包括:有三种情况(这三种情况存在交集)删一条割边+两条随便的边,删两条可以打出combo的边+一条随便的边,删三条可以打出combo的边。

分情况搞搞,去掉交集部分就行了。

以后我要是牛逼了就把这道题出给小朋友们。


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter