博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大流增广路(KM算法) HDOJ 1853 Cyclic Tour
阅读量:6221 次
发布时间:2019-06-21

本文共 2282 字,大约阅读时间需要 7 分钟。

 

1 /* 2     KM: 相比HDOJ_1533,多了重边的处理,还有完美匹配的判定方法 3 */ 4 #include 
5 #include
6 #include
7 #include
8 using namespace std; 9 10 const int MAXN = 1e2 + 10;11 const int INF = 0x3f3f3f3f;12 int x[MAXN], y[MAXN];13 int w[MAXN][MAXN];14 int visx[MAXN], visy[MAXN];15 int ly[MAXN];16 int n, m, d;17 18 bool DFS(int u) {19 visx[u] = true;20 for (int i=1; i<=n; ++i) {21 if (!visy[i] && x[u] + y[i] == w[u][i]) {22 visy[i] = true;23 if (ly[i] == -1 || DFS (ly[i])) {24 ly[i] = u; return true;25 }26 }27 else if (x[u] + y[i] > w[u][i]) d = min (d, x[u] + y[i] - w[u][i]);28 }29 return false;30 }31 32 int KM(void) {33 for (int i=1; i<=n; ++i) {34 x[i] = -INF;35 for (int j=1; j<=n; ++j) {36 x[i] = max (x[i], w[i][j]); 37 }38 }39 40 memset (ly, -1, sizeof (ly));41 memset (y, 0, sizeof (y));42 for (int i=1; i<=n; ++i) {43 while (true) {44 memset (visx, false, sizeof (visx));45 memset (visy, false, sizeof (visy));46 d = INF;47 if (DFS (i)) break;48 for (int i=1; i<=n; ++i) {49 if (visx[i]) x[i] -= d;50 }51 for (int j=1; j<=n; ++j) {52 if (visy[j]) y[j] += d;53 }54 }55 }56 57 for (int i=1; i<=n; ++i) {58 if (ly[i] == -1 || w[ly[i]][i] == -INF) return -1;59 }60 61 int res = 0;62 for (int i=1; i<=n; ++i) {63 res += x[i] + y[i];64 }65 66 return -res;67 }68 69 int main(void) { //HDOJ 1853 Cyclic Tour70 //freopen ("HDOJ_1853.in", "r", stdin);71 72 while (scanf ("%d%d", &n, &m) == 2) {73 if (!n && !m) break;74 for (int i=1; i<=n; ++i) {75 for (int j=1; j<=n; ++j) w[i][j] = -INF;76 }77 for (int i=1; i<=m; ++i) {78 int u, v, c; scanf ("%d%d%d", &u, &v, &c);79 if (-c > w[u][v]) w[u][v] = -c;80 }81 printf ("%d\n", KM ());82 }83 84 return 0;85 }

 

转载于:https://www.cnblogs.com/Running-Time/p/4662493.html

你可能感兴趣的文章
好纠结啊,JeeWx商业版本和开源版本有什么区别呢?
查看>>
vim常用命令
查看>>
iptables端口安全高级应用
查看>>
Docker配置&LNMP环境搭建
查看>>
使用YUICompressor时出现unterminated string literal的处理
查看>>
曲子龙:不同行业应用区块链到底能够链上啥?
查看>>
achartengine.jar导致不能package的解决办法
查看>>
Spring Cloud与Dubbo共存方案总结
查看>>
Mongodb基操--分片群集操作详解
查看>>
配置文档的访问权限
查看>>
消息总线(Kafka)
查看>>
IP UDP包头详解
查看>>
Kafka连接器深度解读之错误处理和死信队列
查看>>
苹果电脑专业录音软件 电脑如何在线录音
查看>>
DCHP基本配置及中继实验一
查看>>
人工智能、神经网络、深度学习、机器学习傻傻分不清?来看看AI奠基人的解答!...
查看>>
基于 Kafka 实现分布式事件驱动
查看>>
深入浅出大数据分析
查看>>
Android路由框架-ARouter详解
查看>>
Eclipse快捷键大全(转载)
查看>>