poj 3041
2014-07-16 10:36
260 查看
匈牙利算法练习
顶点覆盖
行,列匹配。
行列交点处有石头,表明要消去,则建立联系,此后这两点(行,列)无石头,不用再匹配。
顶点覆盖
行,列匹配。
行列交点处有石头,表明要消去,则建立联系,此后这两点(行,列)无石头,不用再匹配。
#include <iostream> #include <cstdio> #include <cstring> #define Max 500 using namespace std; int n,k; int _map[1000][1000]; int link[1000],vis[1000]; int dfs(int t) { for(int i=0;i<n;i++) { if(!vis[i]&&_map[t][i]) { vis[i]=1; if(link[i]==-1||dfs(link[i])) { link[i]=t; return 1; } } } return 0; } int hungery() { int num=0; for(int i=0;i<n;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) { num++; } } return num; } int main() { //freopen("in","r",stdin); while(scanf("%d%d",&n,&k)!=EOF) { memset(_map,0,sizeof(_map)); memset(link,-1,sizeof(link)); for(int i=0;i<k;i++) { int a,b; scanf("%d%d",&a,&b); _map[a-1][b-1]=1; } printf("%d\n",hungery()); } return 0; }
相关文章推荐
- POJ 3041 Asteroids(二分图模板题)
- POJ - 3041 最小顶点覆盖
- poj 3041 Asteroids
- poj3041——最小点覆盖
- 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 二分图最小点覆盖
- POJ 3041 Asteroids(匈牙利算法—最小点覆盖)
- Asteroids(POJ_3041)
- 二分图匹配 最大匹配数+最大点覆盖 POJ 1469+POJ 3041
- poj 3041 Asteroids
- POJ 3041 Asteroids 匈牙利算法
- POJ 3041 POJ 3041