poj3041 Asteroids 二分匹配匈牙利模版题目
2013-10-16 16:42
309 查看
题目是给一个矩阵,再给出坐标,表示此坐标处有星星,主人公有一把很牛逼的枪,打一下能消灭一排或者一列的星星,问最少打几枪,反过来想其实就是求出最多有几个星星不在同一列也不再同一行
#include<iostream> #include<cstdio> #include<list> #include<algorithm> #include<cstring> #include<string> #include<queue> #include<stack> #include<map> #include<vector> #include<cmath> #include<memory.h> #include<set> #define ll long long #define LL __int64 #define eps 1e-8 const ll INF=9999999999999; using namespace std; #define M 400000100 #define inf 0xfffffff int mp[512][512]; int marry[2512]; bool vis[2512]; int n,k; void clear() { memset(mp,0,sizeof(mp)); memset(marry,-1,sizeof(marry)); } bool dfs(int x) { for(int i=1;i<=n;i++) { if(mp[x][i] && !vis[i]) { vis[i]=1; if(marry[i]==-1 || dfs(marry[i])) { marry[i]=x; return 1; } } } return 0; } int main(void) { while(scanf("%d %d",&n,&k)==2) { clear(); int u,v; for(int i=0;i<k;i++) { scanf("%d %d",&u,&v); mp[u][v]=1; } int ans=0; for(int i=1;i<=n;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; } printf("%d\n",ans); } }
相关文章推荐
- POJ3041《Asteroids》方法:匈牙利算法(最小点覆盖数==最大二分匹配数)
- poj 3041 Asteroids 二分匹配 匈牙利算法 模板题
- poj3041 Asteroids 匈牙利算法 最小点集覆盖问题=二分图最大匹配
- POJ 3014:Asteroids(二分匹配,匈牙利算法)
- 二分匹配 模版 及最大总结 及 题目集合 +解析
- HDU 2444 The Accomodation of Students(最大二分匹配(匈牙利算法)+二分图判断->模板题目)
- POJ3041 Asteroids【二分匹配】
- POJ 3014:Asteroids(二分匹配,匈牙利算法)
- Pku acm 3041 Asteroids 数据结构题目解题报告(十六)---- 匈牙利算法求二分图的最大匹配
- poj3041--Asteroids(二分匹配)
- poj Asteroids (二分匹配之匈牙利算法)
- poj 匈牙利二分匹配 模板 poj题目
- 二分图的最大匹配 ————匈牙利算法 (转载了一个大神的趣味算法) poj3041(Asteroids)
- 二分匹配(匈牙利算法)模板
- poj 3041 Asteroids(二分匹配,最小点覆盖)
- hdu3360+二分匹配(匈牙利算法)
- hdu Courses 1083 二分匹配 ,匈牙利算法。。水题
- poj3041 匈牙利算法 二分图最大匹配
- POJ 3041 Asteroids(二分匹配模板题)
- uva11419 【最大二分匹配求最小点覆盖 匈牙利算法】