[PKU 1144]Network(割点)

【题目大意】:

给你一个图,求割点的个数~

【题目分析】:

这题够裸了吧……刷水题果然很有快感啊……

其实要是不会割点算法还是要想想的~

那就简单总结下吧~割点的特点就是如果去掉这个点图就不连通了。这个就有一个非常经典的东西,就是WC王宏说成“塔尖”(Tarjan)的算法。(P.s.他刚说的时候我们几个都楞了,反应过来我们都冷了……)

Tarjan算法是一堆算法(我只能这么说,因为好多算法都叫Tarjan),关于连通性的几个Tarjan算法都有一个很有特点的地方,就是他都用到了一下两个数组。

dfn:这个点在dfs序列中的位置

low:经过这个点及这个点的所有儿子能追溯到的dfn最小点的dfn值~~

这样我们发现,如果发现low(儿子)>=dfn(父亲),那么这个父亲就是一个割点。(他的儿子向下找没法重新找到自己的父亲~)

当然这还是不够的,我们发现对于我们搜索的第一个点来说,他的dfn值是1,永远不会有点的low值比他大,所以我们要特判下,如果说他的真正的儿子(就是dfs的时候找到的儿子,也就是环不算)的个数大于1的话,他就是一个割点。

【代码】(这悲剧的东西怎么也跑不出0MS来~):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值