UVA 1411 - Ants

题目链接

题意:给定一些黑点白点,要求一个黑点连接一个白点,而且全部线段都不相交

思路:二分图完美匹配,权值存负的欧几里得距离,这种话,相交肯定比不相交权值小,所以做一次完美匹配就能够了

代码:

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;const int MAXNODE = 105;typedef double Type;
const Type INF = 0x3f3f3f3f;struct KM {int n;Type g[MAXNODE][MAXNODE];Type Lx[MAXNODE], Ly[MAXNODE], slack[MAXNODE];int left[MAXNODE];bool S[MAXNODE], T[MAXNODE];void init(int n) {this->n = n;}void add_Edge(int u, int v, Type val) {g[u][v] = val;}bool dfs(int i) {S[i] = true;for (int j = 0; j < n; j++) {if (T[j]) continue;double tmp = Lx[i] + Ly[j] - g[i][j];if (fabs(tmp) < 1e-9) {T[j] = true;if (left[j] == -1 || dfs(left[j])) {left[j] = i;return true;}} else slack[j] = min(slack[j], tmp);}return false;}void update() {double a = INF;for (int i = 0; i < n; i++)if (!T[i]) a = min(a, slack[i]);for (int i = 0; i < n; i++) {if (S[i]) Lx[i] -= a;if (T[i]) Ly[i] += a;}}void km() {for (int i = 0; i < n; i++) {left[i] = -1;Lx[i] = -INF; Ly[i] = 0;for (int j = 0; j < n; j++)Lx[i] = max(Lx[i], g[i][j]);}for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) slack[j] = INF;while (1) {for (int j = 0; j < n; j++) S[j] = T[j] = false;if (dfs(i)) break;else update();}}}
} gao;const int N = 105;
int n;
struct Point {double x, y;void read() {scanf("%lf%lf", &x, &y);}
} a[N], b[N];double dis(Point a, Point b) {double dx = a.x - b.x;double dy = a.y - b.y;return sqrt(dx * dx + dy * dy);
}int main() {int bo = 0;while (~scanf("%d", &n)) {if (bo) printf("\n");else bo = 1;gao.init(n);for (int i = 0; i < n; i++)a[i].read();for (int i = 0; i < n; i++)b[i].read();for (int i = 0; i < n; i++)for (int j = 0; j < n; j++)gao.add_Edge(i, j, -dis(b[i], a[j]));gao.km();for (int i = 0; i < n; i++)printf("%d\n", gao.left[i] + 1);}return 0;
}

UVA 1411 - Ants(二分图完美匹配)相关推荐

  1. LA 4043 Ants 二分图完美匹配

    题目: https://icpcarchive.ecs.baylor.edu/external/40/4043.pdf 样例运行结果与sample output不一样,坑死了. const int I ...

  2. UVA 11383 - Golden Tiger Claw(二分图完美匹配扩展)

    UVA 11383 - Golden Tiger Claw 题目链接 题意:给定每列和每行的和,给定一个矩阵,要求每一个格子(x, y)的值小于row(i) + col(j),求一种方案,而且全部行列 ...

  3. Uvalive 4043 - Ants(二分图完美匹配)

    题目链接 https://vjudge.net/problem/UVALive-4043 [题意]        给出n个白点和n个黑点的坐标,要求用n条不相交的线段把它们连起来,其中每条线段恰好连接 ...

  4. poj 3565 uva 1411 Ants KM算法求最小权

    由于涉及到实数,一定,一定不能直接等于,一定,一定加一个误差<0.00001,坑死了-- 有两种事物,不难想到用二分图.这里涉及到一个有趣的问题,这个二分图的完美匹配的最小权值和就是答案.为啥呢 ...

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

    题目大意:给出棋盘上的N个点的位置.如今问将这些点排成一行或者一列.或者对角线的最小移动步数(每一个点都仅仅能上下左右移动.一次移动一个) 解题思路:暴力+二分图最佳完美匹配 #include < ...

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

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

  7. UVa 11383 少林决胜(二分图最佳完美匹配)

    https://vjudge.net/problem/UVA-11383 题意: 给定一个N×N矩阵,每个格子里都有一个正整数W(i,j).你的任务是给每行确定一个整数row(i),每列也确定一个整数 ...

  8. 模板 - KM算法(O(n^3))(二分图最大权完美匹配)

    整理的算法模板合集: ACM模板 题目描述 给定一张二分图,左右部均有 n 个点,共有 m 条带权边,且保证有完美匹配. 求一种完美匹配的方案,使得最终匹配边的边权之和最大. //Data const ...

  9. 二分图的最佳完美匹配(模板)

    二分图的最佳完美匹配,也就是带权值的无向二分图中权值之和最大的完美匹配,整个图分为两个不相交的集合x和y,采用KM算法求解,也称匈牙利算法. 时间复杂度为O(n^3) typedef int type ...

最新文章

  1. ES6 module 简单整理
  2. python做exe开发教程_python做exe开发教程
  3. 【转】解决win7下重装winXP 系统启动选择菜单消失 问题
  4. tfs 2013 access deny
  5. L1-031. 到底是不是太胖了-PAT团体程序设计天梯赛GPLT
  6. jquery实现简单的滑动解锁
  7. 使用二进制编辑器制作操作系统启动盘
  8. 省市区联动附(2020年省市区数据)
  9. 关于如何保持图片分辨率并压缩图片存储大小
  10. js中indexOf的用法
  11. 从数据爬取到决策树建模——预测北京二手房房价
  12. Notepad++ 安装 HexEditor 插件
  13. 好用的浏览器,与Google Chrome同内核
  14. IIS 服务器常见漏洞
  15. 一场积极的变革,期待着与5G的精彩邂逅
  16. POI之Word转化为Markdown-yellowcong
  17. AP_应付税务预扣税Withholding Tax中付款时产生预扣税(案例)
  18. [学习笔记] 二进制小数表示方法
  19. redhat linux 9.0 u盘安装,Red hat linux 9.0挂载U盘
  20. Linux下安装Psi-Blast,HHblits和MUFoldSS,用于预测蛋白质二级结构

热门文章

  1. android程序导入虚拟机,android项目打包成apk应用程序后部署到虚拟机上测试
  2. python 函数可以作为容器对象的元素_python基础(十四):函数对象与闭包
  3. python中的作用域_python 模块的作用域
  4. pomelo mysql_pomelo连接mySQL
  5. matlab 符号表,MATLAB——matlab特殊符号表【转载】
  6. 两位小数乘两位小数竖式_人教版小学数学五年级上册小数乘整数公开课优质课课件教案视频...
  7. python contextlib
  8. 1.4 Padding
  9. Java设计模式学习总结(7)——结构型模式之适配器模式
  10. CISCO 端口出现err-disabled 现象解决案例