POJ3041 Asteroids 二分匹配-匈牙利算法
来源:互联网 发布:ubuntu切换中文输入法 编辑:程序博客网 时间:2024/05/16 11:02
Problem Address:http://poj.org/problem?id=3041
【思路】
事实上,最小点集覆盖数等于二分图的最大匹配。
以行和列为点,如果某个点有asteroid,则新建一个 i->j 的连接。
则问题变成求最小点集覆盖。
最后求其二分图的最大匹配则为答案。
参考“二分图最大匹配的König定理及其证明”:http://www.cnblogs.com/mjc467621163/articles/2110823.html
【代码】
#include <iostream> using namespace std; const int maxn = 500; bool g[maxn+5][maxn+5]; bool y[maxn+5]; int link[maxn+5]; bool find(int v, int m) { int i; for(i=1;i<=m;i++) { if(g[v][i] && !y[i]) { y[i]=true; if(link[i]==0 || find(link[i],m)) { link[i]=v; return true; } } } return false; } int main() { int n, k; int i, j; int a, b; int ct; scanf("%d %d", &n, &k); memset(g, false, sizeof(g)); memset(link, 0, sizeof(link)); for (i=0; i<k; i++){scanf("%d %d", &a, &b);g[a][b] = true;}ct = 0; for(i=1; i<=n ; i++) { for (j=0; j<=n; j++) y[j] = false; if(find(i, n)) { ct++; } } printf("%d\n", ct); return 0; }
- POJ3041 Asteroids 二分匹配-匈牙利算法
- poj3041 Asteroids 二分匹配匈牙利模版题目
- POJ3041 Asteroids【二分匹配】
- POJ3041《Asteroids》方法:匈牙利算法(最小点覆盖数==最大二分匹配数)
- poj3041 匈牙利算法 二分图最大匹配
- poj3041——Asteroids(二分图,匈牙利算法)
- poj3041 Asteroids 最小点覆盖 二分图 匈牙利算法BFS
- poj3041--Asteroids(二分匹配)
- poj Asteroids (二分匹配之匈牙利算法)
- POJ3041——Asteroids(匈牙利算法)
- poj3041二分图的最大匹配匈牙利算法
- poj3041 二分图最大匹配(匈牙利算法)
- 二分图最大匹配:匈牙利算法(poj3041)
- 二分图的最大匹配 ————匈牙利算法 (转载了一个大神的趣味算法) poj3041(Asteroids)
- POJ3041最大匹配匈牙利算法
- POJ3041--Asteroids--二分图最大匹配--Konig
- (二分图最大匹配) poj3041 Asteroids
- POJ3041-Asteroids(二分图匹配)
- ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []
- 数字,字符串的从尾到头的输出
- 华为_C++ 笔试题目
- POJ 2760: 数字三角形最近的提交: Accepted
- 用C#写了一个新增用户就发送邮件和手机短信的SqlServer触发器(附源码)
- POJ3041 Asteroids 二分匹配-匈牙利算法
- pku acm 1002
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- 选定的数据存储区出现问题,原因可能是服务器名称或凭据无效,或者权限不足。也可能是未启用角色管理器功能造成的。
- VC调试篇
- PyQt运行程序的单个实例
- SMTP 命令
- 配置XDM-一种Linux的图形登录界面
- Flex异步令牌