hack 数据:
input:
7 8 1 7
1 2 1
1 3 1
2 4 1
3 4 1
4 7 1
4 5 1
5 7 1
4 6 2147483647
output:
2
wrong output:
1

这个 hack 数据能 hack 掉每次通过寻找出边中深度的最小值并更新该点的深度,且汇点的深度初始设为 0 ,且没有判该点能否走到汇点的写法,如 我的提交记录。但是题解里面都写的是给该点的深度加 1 的写法,所以 hack 不掉题解……
hack 的原理:第一次,从 1 出发沿着 1→3→4 和 1→2→4 中的一条路径走到 4,并给 7 传输 1 的流量。此时该点流量已经用完,于是更新深度,6 号点的深度为 −1,于是把 4 号点的深度更新为 −1+1=0。
第二次,从 1 出发沿着 1→3→4 和 1→2→4 中的另一条路径走到 4,由于 4 号点的深度为 0,7 号点的深度为 0,5 号点的深度为 1,所以只能向 6 号点传输 1 的流量,但是 6 号点无法到达汇点,不会计入答案。
综上,我的程序会输出 1,但是正确答案是 2。
解决方法很简单,要么使用每次将深度加 1 的写法,要么判断一下,禁止跑到无法到达汇点的点即可。
申请管理员将该 hack 数据加入测试数据。
为方便大家,把代码放到二楼。