POJ 1966 Cable TV Network(证明有误)

来源:互联网 发布:51单片机40引脚 编辑:程序博客网 时间:2024/05/01 02:37

求图的点连通度

 

点连通度的定义:一个具有N个点的图G中,在去掉任意k-1个顶点后(1<=k<=N,所得的子图仍然连通,去掉K个顶点后不连通,则称GK连通图,K称作图G的连通度,记作KG)。即去掉最少个数的点后,子图不连通或者成为平凡图

 

做法:拆点(无向无向边拆成两条有向边),指定一个源点,枚举汇点(如果汇点与源点不连通,则图不连通),求使源汇不连通最少要移除的点数,并取最小值,如果最小值比n大,则最小值为n

 

详情见:http://hi.baidu.com/lerroy312/blog/item/d7ea97ee7b1f3cddd439c927.html

对于为什么只要枚举汇点:

 

假设点连通度为k,那么如果你枚举源汇,我们构图的时候是拆点的,所有最小割中最小的一定是k,对应k个点,割边为这k个点拆点后对应的边,那么,这个最小割把所有点点分成了两部分,S和T集合,S和T集合中的点都是不连通的,而S集合中的点都是连通的,T集合中的点也都是连通的,对于任意一个点i属于S,任意一个点j属于T,要使得他们不连通,在图中删除的点都为k,不可能更小了,否则最小割值比k小,而如果他们同时属于S集合或者T集合,使得他们不连通,要删除的点大于k,因为他们现在还连通,于是,如果我们指定一个源点,枚举汇点,如果这个源点与汇点同时在刚才那个最小割的S或T集合中,要使他们不连通,删除的点必然大于k,如果他们一个属于S,一个属于T,那么使他们不连通,要删除的点就是k个,所以,只要枚举汇点就行了

 

 

代码:

原创粉丝点击