VIJOS 1212 Way Selection
来源:互联网 发布:为什么4g网络特别慢 编辑:程序博客网 时间:2024/05/16 12:46
题目大意:
非常显然的二分图最大匹配。
解题思路:
上匈牙利。
关于匈牙利算法。
就是关于寻找增广路的算法。
伪代码如下:
bool 寻找从k出发的对应项出的可增广路{ while (从邻接表中列举k能关联到顶点j) { if (j不在增广路上) { 把j加入增广路; if (j是未盖点 或者 从j的对应项出发有可增广路) { 修改j的对应项为k; 则从k的对应项出有可增广路,返回true; } } } 则从k的对应项出没有可增广路,返回false;}void 匈牙利hungary(){ for i->1 to n { if (则从i的对应项出有可增广路) 匹配数++; } 输出 匹配数;}
#include<iostream>#include<cstring>#include<cmath>using namespace std;int r,a,t;double px[1001],py[1001];int lk[1001],y[1001],mp[1001][1001];int ans=0;bool pd(double x,double y,double v,int k){if(v*t>=sqrt((x-px[k])*(x-px[k])+(y-py[k])*(y-py[k])))return 1;return 0;}bool find(int v){for(int i=1;i<=a;i++) if(mp[v][i]&&!y[i]) { y[i]=1; if(!lk[i]||find(lk[i])) { lk[i]=v; return 1; } } return 0;}int main(){ double xx,yy,v;cin>>r>>a>>t;for(int i=1;i<=a;i++) cin>>px[i]>>py[i];for(int i=1;i<=r;i++) { cin>>xx>>yy>>v; for(int j=1;j<=a;j++) { if(pd(xx,yy,v,j))mp[i][j]=1; } }for(int i=1;i<=r;i++){memset(y,0,sizeof(y));if(find(i))ans++;}cout<<ans;return 0;}
0 0
- VIJOS 1212 Way Selection
- vijos 1212 way selection 二分图匹配
- Vijos P1212 Way Selection
- 【最大匹配】Way Selection Vijos1212
- vijos P1212Way Selection(简单的建图)
- vijos1212 Way Selection(二分图最大匹配)
- Selection
- Selection
- :: selection
- NEU 1212 VIJOS-P1037
- Selection sort
- type selection
- Selection Sort
- 7、Selection
- Selection sort
- feture selection
- model selection
- Selection Sort
- 探索Android中的Parcel
- 字符设备程序---基础篇
- 1017. Queueing at Bank (25)
- Qt 事件处理机制 (下篇)
- poj2031Building a Space Station【空间坐标距离+prime】
- VIJOS 1212 Way Selection
- CSS架构最佳实践:预测、重用、扩展、维护
- linux 内核调试
- java的四种引用
- C# 重写UserControl.Text 属性值运行清空的解决方法
- 带有下划线和动画效果的视图切换(addChildViewController)
- 通过jQuery ajax访问后台action,在自己本地运行没问题但放到远程服务器后每次请求都是Aborted
- ural -1297. Palindrome----后缀数组解决最长回文串的问题
- JAVA实现DES加密