hdu2063 最大匹配数(匈牙利算法)
2015-07-29 15:14
246 查看
[code]#include <cstdio> #include <iostream> #include <algorithm> #include <queue> #include <cmath> #include <cstring> #include <stack> #include <set> #include <map> #include <vector> using namespace std; #define INF 0x2fffffff #define LL long long #define MAX(a,b) ((a)>(b))?(a):(b) #define MIN(a,b) ((a)<(b))?(a):(b) int k,n,m; vector<int> vec[1005]; int vx[1005]; int vy[1005]; int vis[1005]; int path(int u){ int si = vec[u].size(); for(int i = 0;i < si;i++){ int v = vec[u][i]; if(!vis[v]){ vis[v] = 1; if(vy[v] == -1 || path(vy[v])){ vx[u] = v; vy[v] = u; return 1; } } } return 0; } int maxmatch(){ int res = 0; memset(vx,-1,sizeof(vx)); memset(vy,-1,sizeof(vy)); for(int i = 1;i <= m;i++){ if(vx[i] == -1){ memset(vis,0,sizeof(vis)); res += path(i); } } return res; } int main(){ while(cin >> k,k){ cin >> m >> n; for(int i = 0;i <= n+m;i++){ vec[i].clear(); } int cnta = 1; int cntb = 1; for(int i = 0;i < k;i++){ int x,y; scanf("%d%d",&x,&y); vec[x].push_back(y); } cout << maxmatch() << endl;; } return 0; }
相关文章推荐
- hdoj1232畅通工程(并查集)
- Property Animation 源码学习
- ios 常用的处理沙盒文件方法
- TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
- c语言字符串赋值
- ECShop重命名上传图片名称及修改图片存储路径
- Linux系统一些系统查看指令
- JXLS-----JXLS简介
- [Android优化进阶] 提高ListView性能的技巧
- 关于.net控件的ID
- LeetCode229:Majority Element II
- hdu 1029 Ignatius and the Princess IV
- 用js实现返回上一页
- wkt与wkb
- 求助SQL Server I/O设备错误!!!
- 辞掉老师的铁饭碗,我毅然决然选择python开发
- ReactiveCocoa 学习笔记(一)
- 动态设置TextView值
- JS代码片段:appendHTML 和 insertAdjacentHTML
- hdu 4831