vijos 1212 way selection 二分图匹配
来源:互联网 发布:东莞凤岗cnc编程培训 编辑:程序博客网 时间:2024/05/08 17:42
梗:弄错 ij 居然想打邻接表 dfs里!ans[i]打成!vst[i] 肉眼查了好久……
直接暴力算能不能连边即可
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>using namespace std;double p[1007][2],xs[1007][2],v[1007];double r, a, t, ans[1007], vst[1007], g[1007][1007];bool dfs(int u) { for(int i=1;i<=a;i++) if (g[u][i] && !vst[i]) { vst[i] = 1; if (!ans[i] || dfs(ans[i])) { ans[i] = u; return 1; } } return 0;}void maxmatch() { int cnt = 0; for (int i = 1; i <= r; i++) { memset(vst, 0, sizeof(vst)); if (dfs(i)) cnt++; } cout << cnt;}int main() { cin >> r >> a >> t; for (int i = 1; i <= a; i++) cin >> p[i][0] >> p[i][1]; for (int i = 1; i <= r; i++) { cin >> xs[i][0] >> xs[i][1] >> v[i]; } for(int i=1;i<=r;i++){ for (int j = 1; j <= a; j++) if (v[i] * t >= sqrt((xs[i][0] - p[j][0])*(xs[i][0] - p[j][0]) + (xs[i][1] - p[j][1])*(xs[i][1] - p[j][1]))) g[i][j] = 1; } int cnt = 0; for (int i = 1; i <= r; i++) { memset(vst, 0, sizeof(vst)); if (dfs(i)) cnt++; } cout << cnt; //system("pause"); return 0;}
阅读全文
1 0
- vijos 1212 way selection 二分图匹配
- VIJOS 1212 Way Selection
- vijos1212 Way Selection(二分图最大匹配)
- Vijos P1212 Way Selection
- 【最大匹配】Way Selection Vijos1212
- 【vijos】【二分图最大匹配】银翼の舞
- vijos P1212Way Selection(简单的建图)
- 【vijos】【二分图带权匹配】拯救世界-星际大战
- [二分图]Vijos 柯南开锁
- 二分图图匹配
- 二分图匹配
- 二分图匹配
- 二分图匹配
- 二分图匹配
- 正则二分图匹配
- 二分图匹配
- 二分图匹配总结
- 二分图最大匹配
- 分治算法
- c语言—指针基础(10:自定义类型)
- 简单快速的了解网站的安全情况
- Python 那些事
- 斐讯K2路由器刷OpenWRT系统以及破解锐捷校园网
- vijos 1212 way selection 二分图匹配
- IDA Pro plug-in defines
- git变更记录
- (VS2017+OPENCV3.3.1)摄像头小工具,每5分钟保存一帧画面
- 异常
- 设计模式【代理模式】
- 2
- Java中如何判断两个对象是否相等(Java equals and ==)
- 银行家算法