pku 3041 Asteroids 二分图匹配——匈牙利算法求最小点覆盖
2012-03-14 22:05
471 查看
http://poj.org/problem?id=3041
将行与列转化为左右点集,只要出现Asteroids的点(i,j)就对i j建边,然后求最小点覆盖即可。。。
View Code
将行与列转化为左右点集,只要出现Asteroids的点(i,j)就对i j建边,然后求最小点覆盖即可。。。
View Code
#include <cstdio> #include <cstring> #include <iostream> #define maxn 507 using namespace std; int map[maxn][maxn]; int link[maxn]; bool vt[maxn]; int n,m; bool dfs(int rpos) { int i; for (i = 1; i <= n; ++i) { if (!vt[i] && map[rpos][i]) { vt[i] = true; if (link[i] == -1 || dfs(link[i])) { link[i] = rpos; return true; } } } return false; } void init() { int i,j; for (i = 0; i <= n; ++i) { link[i] = -1; for (j = 0; j <= n; ++j) map[i][j] = 0; } } int main() { int i,x,y; cin>>n>>m; init(); for (i = 0; i < m; ++i) { cin>>x>>y; map[x][y] = 1; } int count = 0; for (i = 1; i <= n; ++i) { memset(vt,false,sizeof(vt)); if (dfs(i)) count++; } cout<<count<<endl; return 0; }
相关文章推荐
- 【POJ 3041 】Asteroids (匈牙利算法最小点覆盖&二分图)
- POJ 3041 Asteroids(匈牙利算法—最小点覆盖)
- POJ 3041 Asteroids (匈牙利算法最小点覆盖)
- POJ 3041 Asteroids 【匈牙利算法最小点覆盖】
- POJ 3041 Asteroids 【匈牙利算法最小点覆盖】
- POJ 3041 Asteroids 匈牙利算法/最小点覆盖
- POJ 3041 Asteroids 匈牙利算法 最小点覆盖
- POJ 3041 Asteroids(最小顶点覆盖,匈牙利算法模板)
- poj_3041 Asteroids(匈牙利算法+最小点覆盖)
- [poj] 3041 Asteroids || 最小点覆盖=最大二分图匹配
- HDU 4160 Dolls(二分图匹配+匈牙利算法+最小路径覆盖)
- pku 3041 Asteroids(最小点覆盖,最大二分匹配)
- poj 3041 Asteroids (最大匹配最小顶点覆盖——匈牙利模板题)
- Pku acm 3041 Asteroids 数据结构题目解题报告(十六)---- 匈牙利算法求二分图的最大匹配
- POJ 3041 Asteroids 二分图匹配 匈牙利算法
- POJ3041《Asteroids》方法:匈牙利算法(最小点覆盖数==最大二分匹配数)
- HDU - 1150 Machine Schedule 最小点覆盖(最大二分图匹配-匈牙利算法)邻接表写法
- POJ 3041 Asteroids 二分图匹配 匈牙利算法
- POJ - 1463 Strategic game 最小边覆盖(二分图匹配-匈牙利算法)
- POJ-1947-Asteroids-求最小点覆盖数(二分图-匈牙利算法)