pku2536 Gopher II
来源:互联网 发布:java jni 参数 编辑:程序博客网 时间:2024/06/01 08:10
题目链接:pku2536
方法:最大匹配
思想:本地要求的是最小有多少只地鼠容易受到攻击,可以先通过求最大匹配,
然后用地鼠数目减去最大匹配数即为答案。地鼠与洞进行最大匹配构图时,
若地鼠走到该洞的时间小于等于规定时间就赋为1,否则为0.
代码:
#include <iostream>#include <cmath> using namespace std;#define MAX 105 //二部图一侧顶点的最大个数int n,m,match[MAX]; //二分图的两个集合分别含有n和m个元素。bool visit[MAX],map[MAX][MAX]; //map存储邻接矩阵。bool DFS(int k){ int t; for(int i = 0; i < m; i++) { if(map[k][i] && !visit[i]) { visit[i] = true; t = match[i]; match[i] = k; //路径取反操作。 if(t == -1 || DFS(t)) return true; //整个算法的核心部分 match[i] = t; } } return false;}int Max_match (){ int ans = 0,i; memset(match, -1, sizeof(match)); for(i = 0; i < n; i++) { memset(visit,0,sizeof(visit)); if(DFS(i)) ans++; } return ans;}struct point {double x,y; };double dist(point a,point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); }const double eps=1e-10;int main(int argc, char *argv[]){int s,v;point gopher[MAX];while(cin>>n>>m>>s>>v){memset(map,0,sizeof(map));int i,j;for(i=0;i<n;i++)cin>>gopher[i].x>>gopher[i].y;for(i=0;i<m;i++){point hole;cin>>hole.x>>hole.y;for(j=0;j<n;j++)if(dist(gopher[j],hole)/v-s<eps)map[i][j]=1;}cout<<n-Max_match()<<endl;}return 0;}
- pku2536 Gopher II
- Gopher II
- 2536 Gopher II
- POJ-2536 Gopher II
- poj 2536 Gopher II
- poj_2536 Gopher II
- UVA10080 Gopher II
- POJ-2536-Gopher II
- poj2536 Gopher II
- poj_ 2536Gopher II
- POJ 2536 Gopher II
- FOJ1341 Gopher II
- POJ 2536 Gopher II
- OpenJudge1538 Gopher II
- poj 2536 Gopher II
- POJ2536-Gopher II
- poj 2536 -- Gopher II (匈牙利)
- POJ 2536 Gopher II 笔记
- struts2上传文件过大问题的处理
- 遍历某个文件夹中的子文件夹以及其文件
- android 输入框 XML 设置于代码设置异同
- loadrunner 录制winsocket协议经验总结
- mac系统下eclipse搭建android环境配置的几点小问题
- pku2536 Gopher II
- 自定义tooltip
- The Type Comparison Operator instanceof
- 究竟是社会不公平,还是我们太浮躁?
- 收缩SQL SERVER 2008日志文件
- MyEclipse Database Explorer 连接oracle 数据库连不上
- 面试之技术面试篇
- gdiplus.h的引用
- DataTable.Compute方法使用实例