hdu6214-边数最少的最小割集
发布时间
阅读量:
阅读量
这道题的题意看起来有些模糊,但一旦理解,就会发现是典型的模板题。
题目要求找出最小割集中的边数最少的情况,存在两种解决方式。在比赛过程中,我采用了第一种方法,据他人所述第二种方法可能会出现超时问题,不过尚未进行实际测试。hdu3987这道题应该两种方法都可以使用。
第一种方法:
在构建图的时候,每条边的权值 w 的计算方式为 w = w * (E + 1) + 1;其中 E 是一个较大的数值。
通过这种方式计算出的最大流 maxflow 除以 (E + 1) 即可得到最小割的总权重,而最大流对 (E + 1) 取余的结果则表示最小割边的数量。
第二种方法:
在完成图的构建并求得最大流之后,若某条边处于满流状态,则说明该边属于最小割集的一部分。
接下来再次构建图时,遵循以下规则:对于满流的边将其容量设置为 1,而对于未满流的边则将其容量设置为一个极大值 INF。此时再计算最大流的结果即为所需的最小割边数。
#include <algorithm>
#include <cstring>
#include <queue>
#include <cstdio>
using namespace std;
const int MAXN = 500;
const int MAXM = 5005;
全部评论 (0)
还没有任何评论哟~
