题目大意:给出一个n个点的有向带权图,找若干个圈,使得每个节点恰好属于一个圈,要求总长度尽量小

解题思路:首先要在一个圈内,且只能在一个圈内,那么每个点的入度和出度要都为1,所以二分图就有了
接着连边,给出来的边都连了,没给的边就设为INF,最后求最小权和就可以来
如果最小权和大于INF了,就表示无法满足每个点都在一个圈内的要求了
注意:会有重边

#include <cstdio>
#include <cstring>#define N 110
#define INF 0x3f3f3f3f
#define max(a,b)((a)>(b)?(a):(b))
#define min(a,b)((a)<(b)?(a):(b))
#define abs(a)((a)>0?(a):(-(a)))
#define ll long longint w[N][N], Lx[N], Ly[N], left[N], slack[N];
bool S[N], T[N];
int n, m;void init() {memset(w, 0x3f, sizeof(w));int j, d;for (int i = 1; i <= n; i++) {while(scanf("%d", &j) && j) {scanf("%d", &d);w[i][j] = min(w[i][j], d);}}for (int i = 1; i <= n; i++)for (int j = 1; j <= n; j++)w[i][j] = -w[i][j];
}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 (!left[j] || match(left[j])) {left[j] = i;return true;}}else slack[j] = min(slack[j], Lx[i] + Ly[j] - w[i][j]);}return false;
}int KM() {for (int i = 1; i <= n; i++) {left[i] = Ly[i] = 0;Lx[i] = -INF;for (int j = 1; j <= n; j++)Lx[i] = max(Lx[i], w[i][j]);}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++)slack[j] = INF;while (1) {for (int j = 1; j <= n; j++) S[j] = T[j] = 0;if (match(i)) break;int a = INF;for (int j = 1; j <= n; j++)if (!T[j])a = min(a, slack[j]);for (int j = 1; j <= n; j++) {if (S[j]) Lx[j] -= a;if (T[j]) Ly[j] += a;}}}ll ans = 0;for (int i = 1; i <= n; i++)ans += Lx[i] + Ly[i];return ans;
}void solve() {ll ans = KM();if (abs(ans) >= INF)printf("N\n");elseprintf("%lld\n", abs(ans));
}int main() {while (scanf("%d", &n) != EOF && n) {init();solve();}return 0;
}

UVALive - 3353 Optimal Bus Route Design(二分图最佳匹配)相关推荐

  1. UVALive 3353 Optimal Bus Route Design

    UVALive 3353 Optimal Bus Route Design 二分图最大完美匹配 题目 题目给出一个带权有向图,找若干个圈,使得每个结点切好属于一个圈,并且所有圈的总长度最小,如果没有满 ...

  2. UVALive 3353 - Optimal Bus Route Design(二分图最小权匹配)

    题目链接 https://cn.vjudge.net/problem/UVALive-3353 [题意] 给你n个点(n<=100)的有向带权图,你要找到n个有向环,使得每个点恰好属于一个环,要 ...

  3. 【UVALive】 3353 Optimal Bus Route Design 费用流

    传送门:[UVALive]3353 Optimal Bus Route Design 题目大意:给出一个n(n <= 100)个点的有向带权图,找若干个圈,使得每个结点恰好属于一个圈.要求总长度 ...

  4. UVA 1349 Optimal Bus Route Design (二分图最小权完美匹配)

    恰好属于一个圈,那等价与每个点有唯一的前驱和后继,这让人想到了二分图, 把一个点拆开,点的前驱作为S集和点的后继作为T集,然后连边,跑二分图最小权完美匹配. 写的费用流..最大权完美匹配KM算法没看懂 ...

  5. Uvalive3353 Optimal Bus Route Design 带权二分图匹配

    题目描述:给出一个有向带权图,现在要求在图中找出若干个环,使得每个点恰好在一个环里,且所有环的距离之和最小,如果不能使每个点恰好在一个环里,输出"N". 思路: 将每个点u拆成u和 ...

  6. POJ 2195 【二分图最佳匹配】.cpp

    题意: 有 n 个房子和 n 个人 每个人走一个单元你就要付 1$ 有什么办法可以让把所有人都分派到房子里 而花费最少 输入: 给出n m 表示该矩阵由n 行 m 列组成 然后给出一个n*m的图 . ...

  7. HDU - 奔小康赚大钱(二分图最佳匹配+KM)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  8. POJ365Ants_二分图最佳匹配

    https://blog.csdn.net/lianai911/article/details/44835659 题意: 在坐标系中有N只蚂蚁,N棵苹果树,给你蚂蚁和苹果树的坐标.让每只蚂蚁去一棵苹果 ...

  9. UVA-1045 - The Great Wall Game(二分图最佳匹配)

    题意:在一个n*n的棋盘上有n个棋子,要求通过移动棋子使棋子的排布满足以下情况之一:呈横行排列:呈纵行排列:呈对角线排列(有两条). 棋子移动一个单元格的费用为1,总费用为所有棋子的移动费用之和.求最 ...

最新文章

  1. 彻底理解cookie,session,token
  2. Hibernate标识符属性(主键)生成策略全析
  3. 启动docker容器时报错:iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT -
  4. python not in range1002无标题_Python中偶尔遇到的细节疑问(一):去除列名特殊字符、标准差出现nan、切片索引可超出范围、range步长、众数...
  5. 泉州中考分数如何计算机,2019年泉州中考总分多少分,泉州中考考试科目设置
  6. linux+top写日志,Linux:日志那些命令
  7. matlab max函数_从零开始的matlab学习笔记——(14)一些有用的函数(上):最值,平均数,中位数...
  8. 分布式设计与开发(四)------数据拆分
  9. python开发技术详解代码_python开发技术详解(四)
  10. 七夕出手,这本情话秘籍请收好
  11. java nextline_使用新一代Java
  12. 对作用域插槽的理解:slot-scope
  13. 基于PHP的汽车租赁网站,基于SSM汽车租赁管理系统
  14. 二阶矩阵转置怎么求_矩阵的转置怎么求 详情介绍
  15. [转]经济学金融学书籍推荐
  16. 元素JavaScript知识点梳理与经典百例
  17. jieba.lcut()
  18. 解决笔记本电脑开机速度缓慢的几种措施,亲测有效
  19. Openstack 组件Placement部署思路过程
  20. java nio 框架_几种Java NIO框架的比较(zz)

热门文章

  1. 2016计算机销量排名,2016US News计算机排名TOP100详情一览表
  2. Nagios和商业开源网管软件SugarNMS的功能介绍和区别
  3. SIM卡应用-OPN,PLMN,SPN
  4. 如何提取Redis中的大KEY
  5. 在无法用网线连接路由器刷机时手动组装编程器固件的方法
  6. 一篇文章吃透Java ArrayList 面试别问,问就是滔滔不绝!
  7. mysql-front 1251_mysql执行错误#1251 (mysql-front连接)解决方案
  8. matlab ode45指令,matlab 中ode45的源代码如何看懂
  9. 使用react的好处_聊一聊我对 React Context 的理解以及应用
  10. 用自制数据集训练yolov5步骤