Gopher II(二分图最大匹配)
来源:互联网 发布:工作流软件是什么 编辑:程序博客网 时间:2024/05/16 09:07
1538:Gopher II
- 总时间限制:
- 2000ms
- 内存限制:
- 65536kB
- 描述
- The gopher family, having averted the canine threat, must face a new predator.
The are n gophers and m gopher holes, each at distinct (x, y) coordinates. A hawk arrives and if a gopher does not reach a hole in s seconds it is vulnerable to being eaten. A hole can save at most one gopher. All the gophers run at the same velocity v. The gopher family needs an escape strategy that minimizes the number of vulnerable gophers. - 输入
- The input contains several cases. The first line of each case contains four positive integers less than 100: n, m, s, and v. The next n lines give the coordinates of the gophers; the following m lines give the coordinates of the gopher holes. All distances are in metres; all times are in seconds; all velocities are in metres per second.
- 输出
- Output consists of a single line for each case, giving the number of vulnerable gophers.
- 样例输入
2 2 5 101.0 1.02.0 2.0100.0 100.020.0 20.0
- 样例输出
1
- 来源
- Waterloo local 2001.01.27
- 我理解的二分图最大匹配:
- 把集合A中的点和集合B中的点最大匹配,用A中的每个点和B中的点连线,如果这个点没有连过,就连上好啦,要是连过了,就往前找,看看前面连过的点能不能换一个连线,给这个点腾个地方。。。(如此直白。。。)
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct dot{double x,y;};dot gopher[150],hole[150];int n,m,s,v,d;double dis(int a,int b){return (gopher[a].x-hole[b].x)*(gopher[a].x-hole[b].x)+(gopher[a].y-hole[b].y)*(gopher[a].y-hole[b].y);}bool vis[150];int match[150];bool dfs(int x){for(int i=1;i<=m;i++){if(!vis[i]&&dis(x,i)<=(double)d*d){vis[i]=1;if(match[i]==-1||dfs(match[i])){match[i]=x;return true;}}}return false;}int ans(){memset(match,-1,sizeof(match));int sum=0;for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));if(dfs(i)){sum++;}}return sum;}int main(){while(scanf("%d %d %d %d",&n,&m,&s,&v)!=EOF){d=s*v;for(int i=1;i<=n;i++){scanf("%lf %lf",&gopher[i].x,&gopher[i].y);}for(int i=1;i<=m;i++){scanf("%lf %lf",&hole[i].x,&hole[i].y);}printf("%d\n",n-ans());}return 0;}
0 0
- Gopher II(二分图最大匹配)
- POJ2536 Gopher II【二分图最大匹配】
- POJ2536 Gopher II(二分图最大匹配)
- POJ 2536 Gopher II(二分图的最大匹配)
- POJ 2536 Gopher II (二分图求最大匹配)
- poj 2536 Gopher II(二分图最大匹配,构图)
- Gopher(二分图最大匹配)
- 【二分图+最大匹配】北大 poj 2536 Gopher II
- ZOJ 1882 Gopher II(二分图最大匹配)
- POJ 2536 Gopher II(二分图最大匹配)
- POJ 2536 Gopher II(二分图最大匹配)
- poj 2536 Gopher II 二分图最大匹配
- POJ - 2536 Gopher II 二分图 最大匹配
- POJ 2536 Gopher II (二分图最大匹配)
- POJ 2536 Gopher II(二分图最大匹配)
- POJ 2536 Gopher II(二分图最大匹配)
- POJ 2536 Gopher II(二分图最大匹配)
- POJ-2536 Gopher II(二分图最大匹配)
- swift 与 C 语言混合编程,主要关于指针变量的调用问题
- UITextField文字垂直居中和placeholder偏上的问题
- 单例设计模式 简单易懂
- cordova详解及介绍
- Java导出Excel三表头
- Gopher II(二分图最大匹配)
- 老鸟的Python入门教程
- 字面量语法的使用--IOS
- leetcode 41:First Missing Positive
- gradle Build Model failure
- Fragment的懒加载
- 宏定义的使用
- Android开发之如何保证Service不被杀掉(broadcast+system/app)
- 编译 Linux 内核