HDU 2063 过山车(匈牙利算法模板)
来源:互联网 发布:手机电脑连接软件 编辑:程序博客网 时间:2024/04/30 19:23
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=2063
分析与总结:
这题是裸的二分匹配,用来验证模板的
代码:
1. DFS
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int MAXN = 505;int Nx,Ny; int G[MAXN][MAXN];int Mx[MAXN], My[MAXN]; bool mark[MAXN];bool FindPath(int u){ for(int v=0; v<Ny; ++v){ if(G[u][v] && !mark[v]){ mark[v] = true; if(My[v]==-1 || FindPath(My[v])){ My[v] = u; Mx[u] = v; return true; } } } return false;}int MaxMatch(){ int ret=0; memset(Mx, -1, sizeof(Mx)); memset(My, -1, sizeof(My)); for(int u=0; u<Nx; ++u){ if(Mx[u] == -1) { memset(mark, 0, sizeof(mark)); if(FindPath(u)) ++ret; } } return ret;}int main(){ int k,a,b; while(~scanf("%d%d%d",&k,&Nx,&Ny) && k){ memset(G,0,sizeof(G)); for(int i=0; i<k; ++i) { scanf("%d%d",&a,&b); G[a-1][b-1]=1; } printf("%d\n",MaxMatch()); } return 0;}
2. BFS
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int MAXN = 505;int Nx,Ny; int G[MAXN][MAXN];int Mx[MAXN], My[MAXN], prev[MAXN], Q[MAXN]; int mark[MAXN];int MaxMatch(){ int res = 0; int front, rear; memset(Mx, -1, sizeof(Mx)); memset(My, -1, sizeof(My)); memset(mark, -1, sizeof(mark)); for (int i = 0; i < Nx; i++){ if (Mx[i] == -1){ front = rear = 0; Q[rear++] = i; prev[i] = -1; bool flag = 0; while (front < rear && !flag){ int u = Q[front]; for (int v = 0; v < Ny && !flag; v++){ if (G[u][v] && mark[v] != i){ mark[v] = i; Q[rear++] = My[v]; if (My[v] >= 0) prev[My[v]] = u; else{ flag = 1; int d = u, e = v; while (d != -1){ int t = Mx[d]; Mx[d] = e; My[e] = d; d = prev[d]; e = t; } } } } front++; } if (Mx[i] != -1) res++; } } return res;}int main(){ int k,a,b; while(~scanf("%d%d%d",&k,&Nx,&Ny) && k){ memset(G,0,sizeof(G)); for(int i=0; i<k; ++i) { scanf("%d%d",&a,&b); G[a-1][b-1]=1; } printf("%d\n",MaxMatch()); } return 0;}
—— 生命的意义,在于赋予它意义士。
原创 http://blog.csdn.net/shuangde800 , By D_Double (转载请标明)
- HDU 2063 过山车(匈牙利算法模板)
- HDU 2063 过山车 匈牙利算法模板题
- HDU 2063:过山车(匈牙利算法模板题)
- HDU 2063 过山车(二分图+匈牙利算法模板题)
- hdu 2063 过山车(匈牙利算法)
- HDU 2063 过山车(匈牙利算法)
- hdu 2063 过山车(匈牙利算法)
- 匈牙利算法 hdu 2063(过山车)
- 【hdu 2063】过山车(匈牙利算法)
- HDU 2063 过山车(匈牙利算法)
- hdu-2063-过山车(匈牙利算法)
- HDU 2063 过山车 匈牙利算法
- HDU 2063 过山车(匈牙利算法)
- hdu 过山车(匈牙利算法)
- 匈牙利算法模板 图的二分匹配 hdu 2063 过山车
- HDU 2063 过山车 【二分图最大匹配(匈牙利模板)】
- HDU 2063 -- 过山车(匈牙利)
- HDU 2063 过山车 算法学习:匈牙利算法
- 项目交接
- 【STL】back_inserter与back_insert_iterator
- 程序员 我们周末应该怎么过
- 第九节 java学习 逻辑运算符
- SQLite剖析(6):临时文件和内存数据库
- HDU 2063 过山车(匈牙利算法模板)
- Win下自动备份MySql数据库
- mysql 插入中文乱码解决方案 转
- Ordered Fractions(二叉搜索树)
- N皇后问题,回溯法
- z4root源代码阅读笔记一
- 最长公子序列
- ios6中文键盘按右上角锁屏后crash解决办法
- 触发器