题目传送门

 /*
题意:bob按照指定顺序行走,他的狗可以在他到达下一个点之前到一个景点并及时返回,问狗最多能走多少个景点
匈牙利算法:按照狗能否顺利到一个景点分为两个集合,套个模板
*/
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
using namespace std; const int MAXN = 1e2 + ;
const int INF = 0x3f3f3f3f;
struct P
{
int x, y;
double nxt;
}bob[MAXN], dog[MAXN];
double d[MAXN][MAXN];
bool vis[MAXN];
int lk[MAXN];
int lk2[MAXN];
vector<int> G[MAXN]; double get_dis(int x1, int y1, int x2, int y2)
{
return sqrt ((1.0) * ((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2)));
} bool DFS(int u)
{
for (int i=; i<G[u].size (); ++i)
{
int v = G[u][i];
if (!vis[v])
{
vis[v] = true;
if (lk[v] == - || DFS (lk[v]))
{
lk[v] = u; lk2[u] = v; return true;
}
}
} return false;
} void hungary(int n)
{
int res = ; memset (lk, -, sizeof (lk)); memset (lk2, -, sizeof (lk2));
for (int i=; i<n; ++i)
{
memset (vis, false, sizeof (vis));
if (DFS (i)) res++;
} printf ("%d\n", n + res);
for (int i=; i<n; ++i)
{
printf ("%d %d ", bob[i].x, bob[i].y);
if (lk2[i] != -) printf ("%d %d ", dog[lk2[i]].x, dog[lk2[i]].y);
}
printf ("%d %d\n", bob[n].x, bob[n].y);
} int main(void) //UVA 670 The dog task
{
// freopen ("UVA_670.in", "r", stdin); int t; scanf ("%d", &t);
while (t--)
{
int n, m; scanf ("%d%d", &n, &m);
for (int i=; i<=n; ++i)
{
scanf ("%d%d", &bob[i].x, &bob[i].y); G[i].clear ();
}
for (int i=; i<=m; ++i)
{
scanf ("%d%d", &dog[i].x, &dog[i].y);
} for (int i=; i<=n; ++i)
{
for (int j=; j<=m; ++j)
{
d[i][j] = get_dis (bob[i].x, bob[i].y, dog[j].x, dog[j].y);
}
} for (int i=; i<n; ++i)
{
bob[i].nxt = get_dis (bob[i].x, bob[i].y, bob[i+].x, bob[i+].y);
} for (int i=; i<n; ++i)
{
for (int j=; j<=m; ++j)
{
if (d[i][j] + d[i+][j] <= * bob[i].nxt) G[i].push_back (j);
}
} hungary (n);
if (t) puts ("");
} return ;
}

二分图最大匹配(匈牙利算法) UVA 670 The dog task的更多相关文章

  1. 二分图最大匹配(匈牙利算法) UVA 10080 Gopher II

    题目传送门 /* 匈牙利算法:这题比UVA_670简单,注意是要被吃的鼠的最少个数,套模板 */ #include <cstdio> #include <algorithm> ...

  2. UESTC 919 SOUND OF DESTINY --二分图最大匹配+匈牙利算法

    二分图最大匹配的匈牙利算法模板题. 由题目易知,需求二分图的最大匹配数,采取匈牙利算法,并采用邻接表来存储边,用邻接矩阵会超时,因为邻接表复杂度O(nm),而邻接矩阵最坏情况下复杂度可达O(n^3). ...

  3. Ural1109_Conference(二分图最大匹配/匈牙利算法/网络最大流)

    解题报告 二分图第一题. 题目描写叙述: 为了參加即将召开的会议,A国派出M位代表,B国派出N位代表,(N,M<=1000) 会议召开前,选出K队代表,每对代表必须一个是A国的,一个是B国的; ...

  4. HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1045 Time Limit: 2000/1000 MS (Java/Others) Mem ...

  5. HDU1068 (二分图最大匹配匈牙利算法)

    Girls and Boys Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. poj - 3041 Asteroids (二分图最大匹配+匈牙利算法)

    http://poj.org/problem?id=3041 在n*n的网格中有K颗小行星,小行星i的位置是(Ri,Ci),现在有一个强有力的武器能够用一发光速将一整行或一整列的小行星轰为灰烬,想要利 ...

  7. 二分图最大匹配(匈牙利算法) POJ 3041 Asteroids

    题目传送门 /* 题意:每次能消灭一行或一列的障碍物,要求最少的次数. 匈牙利算法:把行和列看做两个集合,当有障碍物连接时连一条边,问题转换为最小点覆盖数==二分图最大匹配数 趣味入门:http:// ...

  8. HDU - 1045 Fire Net (二分图最大匹配-匈牙利算法)

    (点击此处查看原题) 匈牙利算法简介 个人认为这个算法是一种贪心+暴力的算法,对于二分图的两部X和Y,记x为X部一点,y为Y部一点,我们枚举X的每个点x,如果Y部存在匹配的点y并且y没有被其他的x匹配 ...

  9. 51Nod 2006 飞行员配对(二分图最大匹配)-匈牙利算法

    2006 飞行员配对(二分图最大匹配) 题目来源: 网络流24题 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 第二次世界大战时期,英国皇家空军从沦陷国 ...

随机推荐

  1. PHP上传文件限制修改

    php.ini里面查看如下行: upload_max_filesize post_max_size memory_limit

  2. poj——1422 Air Raid

    Air Raid Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 8577   Accepted: 5127 Descript ...

  3. poj——2367  Genealogical tree

    Genealogical tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6025   Accepted: 3969 ...

  4. Balanced Binary Tree (二叉树DFS)

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  5. MongoDB小结02 - 配置、启动MongoDB

    下载MongoDB 第一步:登上MongoDB官网,找到自己的适合的版本下载 第二步:解压(免安装),改名mongodb(举例命名,可以任个人喜好),放在你喜欢的位置(任喜好) 第三步:通过命令行: ...

  6. python 进程内存增长问题, 解决方法和工具

    转载:http://drmingdrmer.github.io/tech/programming/2017/05/06/python-mem.html#pyrasite-%E8%BF%9E%E6%8E ...

  7. Windows下安Mac

    Windows PC下安装苹果系统 第一步: 準備2個新邏輯分區,一個6G(os),一個隨意(Mac),且不要格式化. 第二步: 启动硬盘助手,选择下载好的苹果镜像文件  .再选择6G(os)分區,寫 ...

  8. 慎用Outline ,UGUI Outline实现原理分析

    使用 UGUI 制作背包的时候.同事发现假设背包中加入了大量的物品.比方两百个.Unity就会出错,提示 Canvas element contains more than 65535 vertice ...

  9. Kinect驱动的人脸实时动画

    近期几年.realtime的人脸动画開始风声水起.不少图形图像的研究者開始在这个领域不断的在顶级会议siggraph和期刊tog上面发文章. 随着kinect等便宜的三维数据採集设备的运用.以及其功能 ...

  10. Django打造大型企业官网(一)

    一.nvm的安装 (1)下载:nvm1.16 (2)安装完成后添加环境变量 C:\Users\Administrator\AppData\Roaming\nvm (3)修改settings.txt,将 ...