Link
Solution
最小割+最小割可行边判断+退流
Tips
被坑。
论Dinic与ISAP的效率。
学网络流算法的时候听说ISAP更高效,就直接没看Dinic。做的几道网络流题也全都没有因为算法被卡过。
但是,今天被卡飞了。
ISAP写完,TLE。本地测试,最大的一个点需要4s。卡常数,最大的一个点还是3s。于是各种办法都没用。
发现网上过掉的程序几乎都是Dinic。学了Dinic。写出来调对之后很快就通过了。
以下纯属一个蒟蒻的自言自语
d[S]<N || num[x]==0。这是ISAP的终止条件。当对网络流进行局部调整的时候,如果两个点之间不联通,可能尝试绕出很多条增广路,才会判定出它们不联通。
加上计数器,计算一次ISAP不联通时的迭代次数,发现单次ISAP,1400个点的图最多居然出现了15W次无效的循环才结束。
而Dinic就每次一遍BFS就保证了在不联通时就能及时结束。
So,整体一遍的用ISAP,对图进行局部调整的用Dinic。
欢迎拍砖 欢迎吐槽
Code
ISAP
1 | //Code by Lucida |
Dinic
1 | //Code by Lucida |