【Hopcroft Karp】HK算法简介

【还在Hungary?你Out了~】



今天上午被下面这道题虐了很久..完全没想到是二分图。

迷宫

根据藏宝地图,cj的科学家们找到了藏宝地点,但却发现入口有多个,谁都没敢冒然进入。于是大家停下脚步,想应该从哪一个门进入。突然,图形学家Mercury发现了隐藏在藏宝地图上的秘密,果然有意识呀!他发现,这个地图在暗处时会显现出一个有向无环图(至于为什么有向,我想是因为某种特殊作用力的缘故吧。),而这个图正是这个迷宫的地图。幸亏没有冒然进入,要不然就出不来了。

但是这个地图却没说出口在哪里,哎,只好用Jupiter的超级机器人进洞寻找了。每一个入口将把机器人瞬间传送到对应编号的点(所有点都能到达),为了不让Jupiter同学失去太多他心爱的机器人,我们必须用最少的机器人去搜索每个点(每个点只能被经过一次)。 

输入

第一行两个数n、m,分别表示地图的点数和边数,接下来m行,每行两个数u、v,表示有一条从点u到点v的有向边。 

输出

只有一个数,表示最少要用的机器人数。

 

输入样例

3 2

1 2

2 3

 

输出样例

1

 

数据范围

n<=200000

m<=500000


被邓大牛点醒,一看, 啊,还真是,只是这数据范围...

于是开始学习Hopcroft Karp

说起来其实也不难,

回想我们在做Hungary的时候,每次只增广一条路,如何优化呢?很简单,就是一次多增广。

流程如下:

①BFS找出极短增广路集,当最短增广路集为∅时退出

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值