给出一个 n 个点的有向图,找若干个圈,是的每个结点恰好属于一个圈。要求总长度尽量小。

三倍经验题 Uva 12264,HDU 1853

这题有两种解法,一是匹配:

每个点只在一个圈中,则他有唯一的前驱和后继,也就是入度为1,出度为1,拆成 入度点和出度点,跑最小全匹配,因为是匹配,这样就保证了他在唯一的一个圈中,但是刘汝佳的板子有个问题,就是他会产生被迫的匹配,瞎起的名字,注意有这样的原本不存在的边,就说明无解。再次熟悉一下顶标。太久没写了~~~~

而是费用流:MCMF

就是中间cap = c,有无解就是看流量是否为 n ,是的,就是最小费用。

#include <bits/stdc++.h>using namespace std;const int maxn = 100;
const int inf = 1<<30;
int W[maxn][maxn],n;
int Lx[maxn],Ly[maxn];      ///顶标
int lefts[maxn];             ///left[i] 为右边第 i 个点的标号
bool S[maxn],T[maxn];       ///S,T左右第 i 个点是否标记bool match(int i) {S[i] = true;for(int j = 1; j <= n; j++) if(Lx[i]+Ly[j]==W[i][j]&&!T[j]) {T[j] = true;if(!lefts[j]||match(lefts[j])) {lefts[j] = i;return true;}}return false;
}void update() {int a = 1<<30;for(int i = 1; i <= n; i++) if(S[i])for(int j = 1; j <= n; j++) if(!T[j])a = min(a,Lx[i]+Ly[j]-W[i][j]);for(int i = 1; i <= n; i++) {if(S[i]) Lx[i]-=a;if(T[i]) Ly[i]+=a;}
}void KM() {for(int i = 1; i <= n; i++) {lefts[i] = Lx[i] = Ly[i] = 0;for(int j = 1; j <= n; j++)Lx[i] = max(Lx[i],W[i][j]);}for(int i=1;i<=n;i++) {for(;;) {for(int j=1;j<=n;j++)S[j] = T[j] = 0;if(match(i))break;else update();}}
}int main()
{//freopen("in.txt","r",stdin);while(scanf("%d",&n),n) {for(int i = 1; i <= n; i++)for(int j = 1; j <= n; j++)W[i][j] = -inf;memchr(W,-inf,sizeof(W));for(int u = 1; u <= n ; u++) {int v,c;while(scanf("%d",&v),v) {scanf("%d",&c);W[u][v] = max(W[u][v],-c);}}KM();bool flag = true;int ans = 0;for(int j = 1; j <= n; j++) {int i = lefts[j];if(W[i][j]==-inf) {flag = false;break;}ans+= -W[i][j];}if(flag==false) puts("N");else printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/TreeDream/p/8376599.html

LA 3353 最优巴士线路设计相关推荐

  1. 转】MYSQL性能调优与架构设计之select count(*)的思考

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/5/ 感谢! Posted: Feb 7, 2013 Tag ...

  2. MySQL性能调优与架构设计——第4章 MySQL安全管理

    第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...

  3. MySQL性能调优与架构设计——第5章 备份与恢复

    第5章 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 MySQL数据库的备 ...

  4. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  5. 面对电磁辐射干扰,如何轻松进行电子线路设计布局?

    面对电磁辐射干扰,如何轻松进行电子线路设计布局? 电磁环境包含辐射和传导能量.EMC也包含辐射和敏感度两方面.辐射是指产品不必要地产生电磁能量.为了打造一种具备电磁兼容性的环境,通常需要控制辐射.敏感 ...

  6. 旅游线路设计html,教学旅游线路设计方案

    一.活动背景以及目的: 各位亲爱的同学们为了使大家在学习山东导游基础知识这门课程时能更有兴趣,能更深入了解山东省旅游资源的多彩魅力,同时更为了使同学们在学完这门课程时能初步了解导游员这个岗位的工作特点 ...

  7. 直流电压检测线路设计

    技术要求: 输入电压:200V~900Vdc 精度:3% 响应速度:100us(确保过压时及时响应) 过压保护准位:400V为低压保护准位,电压到420V时自动复位,滞回范围20V,防止电压波动触发不 ...

  8. mysql性能调优 高可用_MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案...

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  9. AutoCAD Electrical 电气线路设计视频教程

    AutoCAD Electrical 电气线路设计视频教程 ACE教程 链接:https://pan.baidu.com/s/1TXGR94PP73O6F3iqO8xofg 提取码:honv

最新文章

  1. python2中文导致的错误
  2. 企业项目开发--分布式缓存memcached(3)
  3. maven生成jar包,包含第三方jar包
  4. 又想到了模板引擎和前端MVVM框架
  5. 解决IDEA2020控制台乱码的方法(亲测)
  6. [转]一文解释PyTorch求导相关 (backward, autograd.grad)
  7. 实用 —— PowerCLI (一)
  8. (四)Neo4j删除数据需要注意的问题
  9. 【LeetCode笔记】69. x 的平方根(Java、二分)
  10. Harbor 使用 Helm 一键安装
  11. Python Imaging Library: ImageQt Module(图像QT模块)
  12. html5的web存储详解
  13. Volley源码解析(三)
  14. 敏捷开发之极限编程过程
  15. cvSetMouseCallback()鼠标坐标、事件返回
  16. windows入门Elasticsearch7.10(es)之3:本地集群搭建
  17. 两直线夹角求解-Python编程实现
  18. springboot+pageoffice实现Word在线编辑
  19. VSCrawler 爬取美女图片
  20. 大学生计算机自我鉴定500字,大学生自我鉴定500字

热门文章

  1. java连接sqlserver 2005执行存储过程的几种情况
  2. 【UIKit】UITableView 自定义Cell2
  3. 算法分析结课总结--回溯算法
  4. WebWork深度探索之号外
  5. 5.计算机发展个人理解-电路终究是电路 软件如何控制硬件 代码如何操作硬件 硬件是怎么执行代码 代码如何执行 软件与硬件如何交互 计算机思维 抽象 封装 规范 屏蔽 协议分层...
  6. MySQL存储过程_创建-调用
  7. 工业4.0的十大关键词
  8. Jmeter-jtl性能测试报告转换-2种导出方法
  9. PHP date 格式化一个本地时间/日期
  10. Delphi存取图像完整解决方案