最小权值环覆盖问题:用几个环把所有点覆盖,求所选取的边最小的权值之和。

拆点思想+求最小转求最大+KM算法

  1. #include <cstdlib>
  2. #include <cstdio>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <algorithm>
  6. #include <fstream>
  7. #include <iostream>
  8. #define rep(i, l, r) for(int i=l; i<=r; i++)
  9. #define clr(x, c) memset(x, c, sizeof(x))
  10. #define N 123
  11. #define MAX 1<<30
  12. #define ll long long
  13. using namespace std;
  14. int read()
  15. {
  16. int x=0, f=1; char ch=getchar();
  17. while (ch<'0' || ch>'9') { if (ch=='-') f=-1; ch=getchar(); }
  18. while (ch>='0' && ch<='9') { x=x*10+ch-'0'; ch=getchar(); }
  19. return x*f;
  20. }
  21. int n, m, l[N], st[N], lx[N], ly[N], v[N][N];
  22. bool vx[N], vy[N];
  23.  
  24. bool Find(int x)
  25. {
  26. vx[x]=1;
  27. rep(y, 1, n) if (!vy[y])
  28. {
  29. int a=lx[x]+ly[y]-v[x][y];
  30. if (!a)
  31. {
  32. vy[y]=1; if (!l[y] || Find(l[y])) { l[y]=x; return true; }
  33. }
  34. else st[y]=min(st[y], a);
  35. }
  36. return false;
  37. }
  38.  
  39. int km()
  40. {
  41. rep(i, 1, n) lx[i]=-MAX; clr(ly, 0); clr(l, 0);
  42. rep(i, 1, n) rep(j, 1, n) if (lx[i]<v[i][j]) lx[i]=v[i][j];
  43. rep(i, 1, n)
  44. {
  45. rep(j, 1, n) st[j]=MAX;
  46. while (1)
  47. {
  48. clr(vx, 0); clr(vy, 0);
  49. if (Find(i)) break; int a=MAX;
  50. rep(j, 1, n) if (!vy[j] && st[j]<a) a=st[j];
  51. rep(j, 1, n) if (vx[j]) lx[j]-=a;
  52. rep(j, 1, n) if (vy[j]) ly[j]+=a; else st[j]-=a;
  53. }
  54. }
  55. int ans=0;
  56. rep(i, 1, n) if (!l[i] || v[l[i]][i]==-MAX) return -1; else ans+=v[l[i]][i];
  57. return -ans;
  58. }
  59.  
  60. int main()
  61. {
  62. while (~scanf("%d%d", &n, &m))
  63. {
  64. rep(i, 1, n) rep(j, 1, n) v[i][j]=MAX;
  65. rep(i, 1, m) { int x=read(), y=read(), z=read(); if (v[x][y]>z) v[x][y]=z; }
  66. rep(i, 1, n) rep(j, 1, n) v[i][j]*=-1;
  67. printf("%d\n", km());
  68. }
  69. return 0;
  70. }

  

HDU-1853 Cyclic Tour的更多相关文章

  1. hdu 1853 Cyclic Tour 最大权值匹配 全部点连成环的最小边权和

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Others) ...

  2. hdu 1853 Cyclic Tour (二分匹配KM最小权值 或 最小费用最大流)

    Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Total ...

  3. HDU 1853 Cyclic Tour[有向环最小权值覆盖]

    Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Total ...

  4. HDU 1853 Cyclic Tour(最小费用最大流)

    Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others) Tota ...

  5. hdu 1853 Cyclic Tour 最小费用最大流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 There are N cities in our country, and M one-way ...

  6. 【刷题】HDU 1853 Cyclic Tour

    Problem Description There are N cities in our country, and M one-way roads connecting them. Now Litt ...

  7. 最大流增广路(KM算法) HDOJ 1853 Cyclic Tour

    题目传送门 /* KM: 相比HDOJ_1533,多了重边的处理,还有完美匹配的判定方法 */ #include <cstdio> #include <cmath> #incl ...

  8. HDU(1853),最小权匹配,KM

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1853 Cyclic Tour Time Limit: 1000/1000 MS (Java/Other ...

  9. Cyclic Tour HDUOJ 费用流

    Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others)Total ...

  10. hdu 1853 最小费用流好题 环的问题

    Cyclic Tour Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/65535 K (Java/Others) Tota ...

随机推荐

  1. [dp uestc oj] G - 邱老师玩游戏

    G - 邱老师玩游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submi ...

  2. cv2.solvepnp 相机的位姿估计

    预备知识   图像坐标系:   理想的图像坐标系原点O1和真实的O0有一定的偏差,由此我们建立了等式(1)和(2),可以用矩阵形式(3)表示. 相机坐标系(C)和世界坐标系(W): 通过相机与图像的投 ...

  3. Xor Sum

    6498: Xor Sum 时间限制: 1 Sec  内存限制: 128 MB提交: 27  解决: 13[提交][状态][讨论版][命题人:admin] 题目描述 You are given a p ...

  4. 分类回归树(CART)

    概要 本部分介绍 CART,是一种非常重要的机器学习算法.   基本原理   CART 全称为 Classification And Regression Trees,即分类回归树.顾名思义,该算法既 ...

  5. Django ORM models操作

    title: Django ORM models操作 tags: Django --- Django ORM models操作 Django ORM基本操作 一.数据库的创建及增删改查 1 使用类创建 ...

  6. centos7-httpd服务器

    Apache WEB服务器入门简介: Apache HTTP Server是Apache软件基金会的一个开源的网页服务器,可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是目 ...

  7. Java中List集合排序的方法 比较器的使用 根据学生对象数学 语文 英语成绩总和进行sort排序

    package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...

  8. java工作环境配置jdk,idea

    下载 jdk 1.8 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置环境 ...

  9. Livid : 在 26 岁时写给 18 岁的自己

    转载自: https://livid.v2ex.com/essays/2012/01/24/a-letter-from-26-to-18.html 在 26 岁时写给 18 岁的自己 Jan 24, ...

  10. DC 课程内容