POJ 3041 Asteroids(二分图 && 匈牙利算法 && 最小点覆盖)
2024-10-08 10:41:49
嗯...
题目链接:http://poj.org/problem?id=3041
这道题的思想比较奇特:
把x坐标、y坐标分别看成是二分图两边的点,如果(x,y)上有行星,则将(x,y)之间连一条边,而我们要做的就是要找尽量少的点把所有的边覆盖,即为最小点覆盖问题,根据König定理:最小覆盖点数=最大匹配数,所以就可以用匈牙利算法求最大匹配了。
AC代码:
#include<cstdio>
#include<cstring>
#include<iostream> using namespace std; int match[], vis[], g[][], n; inline int dfs(int u){
for(int i = ; i <= n; i++){
if(g[u][i] && !vis[i]){
vis[i] = ;
if(!match[i] || dfs(match[i])){
match[i] = u;
return ;
}
}
}
return ;
}//匈牙利 inline int hungary(){
int ans = ;
for(int i = ; i <= n; i++){
memset(vis, , sizeof(vis));
if(dfs(i)) ans++;
}
return ans;
} int main(){
int k;
while(~scanf("%d%d", &n, &k)){
for(int i = ; i <= k; i++){
int r, c;
scanf("%d%d", &r, &c);
g[r][c] = ;
}
printf("%d\n", hungary());
}
return ;
}
AC代码
最新文章
- [Eclipse] - eclipse集成jboss7.1
- P1311 选择客栈
- Image zImage uImage
- Spring+MyBatis多数据源配置实现
- MySQL数据库安装,配置My.ini文件
- Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会
- NServiceBus-网关和多站点分布
- html 如何引入一个公共的头部和底部
- ext.apply和ext.applyIf
- SurfaceView的一个小应用:开发示波器
- java实现代理domino web邮件下载
- VC POST表单——登录验证新浪邮箱
- 解决子级用css float浮动 而父级div没高度不能自适应高度
- ABP官方文档翻译 4.3 校验数据传输对象
- 基于.net的分布式系统限流组件(限流算法:令牌算法和漏斗算法)
- 第37章 资源所有者密码验证(Resource Owner Password Validation) - Identity Server 4 中文文档(v1.0.0)
- 【读书笔记】使用JMeter创建数据库(Mysql)测试
- C++实现算法常用的STL---整理
- web.xml配置说明
- 死磕nginx系列--配置文档解读