POJ2536-Gopher II-(匈牙利算法)
题意:n只老鼠,m个洞,s秒逃命,逃命速度为v,一个洞只能保住一只老鼠,最少多少只老鼠会被老鹰抓到。
题解:找出每只老鼠有哪些洞可以保命,建立二分图,算出最大匹配,不是求保住命的老鼠,而是求被抓住的老鼠数量。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; int n,m;
double s,v;
vector<int>a[]; bool vis[];
int par[];
struct node
{
double x;
double y;
};
node w[];///老鼠位置
node h[];///洞口位置 double dis( int i,int j )
{
return sqrt( (w[i].x-h[j].x)*(w[i].x-h[j].x) + (w[i].y-h[j].y)*(w[i].y-h[j].y) );
} bool dfs(int x)
{
int len=a[x].size();
for(int i=;i<len;i++)
{
int next=a[x][i];///可以到达的洞口
if( !vis[next] )///本次深搜中没有被访问过
{
vis[next]=true;
if( !par[next] || dfs( par[next] ) )///这个洞口没有被其他老鼠占领 或者 占领该洞口的老鼠可以找到别的洞口
{
par[next]=x;///next的占领者为x,用于以后的回溯
return true;
}
}
}
return false;
} int main()
{
while(scanf("%d %d %lf %lf",&n,&m,&s,&v)!=EOF)
{ memset(par,,sizeof(par));///清空操作
for(int i=;i<=n;i++)
a[i].clear(); for(int i=;i<=n;i++)
scanf("%lf%lf",&w[i].x,&w[i].y);
for(int i=;i<=m;i++)
scanf("%lf%lf",&h[i].x,&h[i].y); double d=s*v;///逃命距离
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{ if( dis(i,j)<=d )///到的洞口距离 小于 逃命距离
a[i].push_back(j);
}
}
int ans=;
for(int i=;i<=n;i++)
{
memset(vis,false,sizeof(vis));
if(!dfs(i)) ///没看清题意wa了好多发
ans++;
}
printf("%d\n",ans);
}
return ;
}
POJ2536-Gopher II-(匈牙利算法)的更多相关文章
- 2018.07.06 POJ2536 Gopher II(二分图匹配)
Gopher II Time Limit: 2000MS Memory Limit: 65536K Description The gopher family, having averted the ...
- POJ2536 Gopher II(二分图最大匹配)
Gopher II Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9005 Accepted: 3724 Descrip ...
- POJ2536 Gopher II【二分图最大匹配】
题目链接: http://poj.org/problem? id=2536 题目大意: 有N仅仅鼹鼠和M个洞穴,假设鼹鼠在S秒内不可以跑到洞穴,就会被老鹰捉住吃掉. 鼹鼠跑的速度为V米/秒. 已知一个 ...
- 二分图最大匹配(匈牙利算法) UVA 10080 Gopher II
题目传送门 /* 匈牙利算法:这题比UVA_670简单,注意是要被吃的鼠的最少个数,套模板 */ #include <cstdio> #include <algorithm> ...
- 匈牙利算法与KM算法
匈牙利算法 var i,j,k,l,n,m,v,mm,ans:longint; a:..,..]of longint; p,f:..]of longint; function xyl(x,y:long ...
- HDU--3081--Marriage Match II--最大匹配,匈牙利算法
Marriage Match II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- POJ 2536 之 Gopher II(二分图最大匹配)
Gopher II Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6675 Accepted: 2732 Descrip ...
- ACM/ICPC 之 机器调度-匈牙利算法解最小点覆盖集(DFS)(POJ1325)
//匈牙利算法-DFS //求最小点覆盖集 == 求最大匹配 //Time:0Ms Memory:208K #include<iostream> #include<cstring&g ...
- 匈牙利算法——S.B.S.
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...
- HDU1054 Strategic Game——匈牙利算法
Strategic Game Bob enjoys playing computer games, especially strategic games, but sometimes he canno ...
随机推荐
- C#应用程序单例并激活程序的窗口 使其显示在最前端
public class SoftHelper { ///<summary> /// 该函数设置由不同线程产生的窗口的显示状态 /// </summary> /// <p ...
- 刷完欧拉计划中难度系数为5%的所有63道题,我学会了Rust中的哪些知识点?
我为什么学Rust? 2019年6月18日,Facebook发布了数字货币Libra的技术白皮书,我也第一时间体验了一下它的智能合约编程语言MOVE,发现这个MOVE是用Rust编写的,看来想准确理解 ...
- 云服务器、VPS、虚拟主机三者之间的区别?
更多精彩内容欢迎访问我的个人博客皮皮家园:https://www.zh66.club期待您的光临哦!我是皮皮猪,感谢各位光临,能为您排忧解难小站深感荣幸!祝您生活愉快! 什么是虚拟主机? 同云主机不一 ...
- MAST 397B: Introduction to Statistical Computing
MAST 397B: Introduction to Statistical ComputingABSTRACTNotes: (i) This project can be done in group ...
- laravel框架模型model的创建与使用方法
这篇文章给大家介绍的内容是关于laravel框架模型model的创建与使用方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.创建model 2. 1 2 3 4 5 6 7 8 ...
- session的工作原理与session用法
一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理,今天在这里做一下梳理. 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1 ...
- WPF DataGrid 自定义样式 MVVM 删除 查询
看到很多小伙伴在找Dategrid样式 就分享一个 ,有不好的地方 请指出 代码部分都加了注释 需要的可以自己修改为自己需要的样式 源码已经上传 地址: https://github.com/YC ...
- Editor模式下实例化Prefab
PrefabUtility.InstantiatePrefab//需要关联 GameObject.Instantiate//不需要关联
- 学习《Linux网络安全技术与实现》,正文为1、2章的笔记,后面的等待更新
博客地址:http://www.cnblogs.com/zengjianrong/p/3280276.html
- Kafka学习笔记之Kafka背景及架构介绍
0x00 概述 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Producer消息路由,Consumer Group以及由其实现的不 ...