【题目】#6003. 「网络流 24 题」魔术球
【算法】最小路径覆盖(详细知识参考网络流总结)
【题解】(i+j)为完全平方数则连边,那么问题转化为添加尽可能多的点使得最小路径覆盖≤n(一条简单路径表示一根柱子)
从1开始枚举答案,每次可以直接在上一次的残余网络上建边增广(二分不优),直到最小路径覆盖>n时停止,i-1就是答案。
打印路径看哪些边满流,记录每个点的前驱,从没有前驱的点开始就可以找到整条路径。
AC代码在这里找:LibreOJ