hdu1845 Jimmy’s Assignment (最大匹配Hopcroft-Karp算法)
来源:互联网 发布:matlab机器人仿真软件 编辑:程序博客网 时间:2024/06/05 19:44
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1845
#include <cstdio> #include <queue> #include <vector> #include <cstring> #include <cmath> #define MAXN 5001 using namespace std; int nx,ny,distx[MAXN],disty[MAXN]; int visited[MAXN],mx[MAXN],my[MAXN]; vector<int> graphics[MAXN]; queue<int> Q; int Scan(){char ch;int ret=0;while((ch=getchar())<'0'||ch>'9');while(ch>='0'&&ch<='9'){ret=ret*10+(ch-'0');ch=getchar();}return ret;}int find(int u) {//寻找增广路 int i,temp; for(i=0;i<graphics[u].size();++i) { temp=graphics[u][i]; if(!visited[temp]&&(disty[temp]==distx[u]+1)) { visited[temp]=1; if(!my[temp]||find(my[temp])) { mx[u]=temp; my[temp]=u; return 1; } } } return 0; } int search() { int temp,u,flag=0; memset(distx,0,sizeof(distx)); memset(disty,0,sizeof(disty)); while(!Q.empty()) Q.pop(); for(int i=1;i<=nx;++i) { if(!mx[i]) Q.push(i); } while(!Q.empty()) { u=Q.front(); Q.pop(); for(int i=0;i<graphics[u].size();++i) { temp=graphics[u][i]; if(!disty[temp]) { disty[temp]=distx[u]+1; if(my[temp]) { distx[my[temp]]=disty[temp]+1; Q.push(my[temp]); } else flag=1; } } } return flag; } int matching() { int ans=0; memset(mx,0,sizeof(mx)); memset(my,0,sizeof(my)); while(search()) { memset(visited,0,sizeof(visited)); for(int i=1;i<=nx;++i) if(!mx[i]&&find(i)) ans++; } return ans; } int main() { int n,u,v,sum,test,N;scanf("%d",&test);while(test--){scanf("%d",&n);N=(n>>1)*3;for(int i=0;i<=n;++i) graphics[i].clear(); while(N--) { //scanf("%d %d",&u,&v); u=Scan();v=Scan();graphics[u].push_back(v); //用邻接表 graphics[v].push_back(u); //建双向图 } nx=ny=n;sum=matching();printf("%d\n",sum/2); }return 0; }
#include<stdio.h> int main() { int t,n,i,x,y; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0;i<n*3/2;i++) scanf("%d%d",&x,&y); printf("%d\n",n/2); } return 0; }
- hdu1845 Jimmy’s Assignment (最大匹配Hopcroft-Karp算法)
- HDU1845 Jimmy’s Assignment(最大匹配)卡时间
- hdu1845 Jimmy’s Assignment --- 完备匹配
- HDU1845 Jimmy’s Assignment
- HDU1845 Jimmy’s Assignment 984ms 飘过啊 汗死 二分匹配最大匹配数
- 最大匹配的Hopcroft-Karp算法
- 二分图最大匹配之Hopcroft-Karp算法
- 学习Hopcroft-Karp二分图最大匹配算法
- 最大匹配优化--Hopcroft-Karp算法及其他资料
- 二分图最大匹配算法-Hopcroft-Karp模板
- hdu 1150 二分图的最大匹配 hopcroft-karp算法
- HDU2389Rain on your Parade(最大匹配+Hopcroft-Karp算法)
- 二分匹配Hopcroft-Karp算法
- HDOJ 1845 Jimmy’s Assignment (求最大匹配数 匈牙利算法)
- hdu 1845 Jimmy’s Assignment(最大二分匹配)
- hdu2389+二分匹配(Hopcroft-Karp算法)
- 【二分图匹配】Hopcroft-Karp算法模板
- 利用匈牙利算法&Hopcroft-Karp算法解决二分图中的最大二分匹配问题
- 几点iOS开发技巧
- 数据结构与程序设计 练习3.3 E7
- mac环境下使用vi进行文本换行
- jsp 用表格显示出jdbc查询出的数据
- 指针的用法
- hdu1845 Jimmy’s Assignment (最大匹配Hopcroft-Karp算法)
- 为什么匿名内部类参数必须为final类型
- 骨灰级泡妞秘籍
- p126 E2
- assert()函数用法总结
- 心得
- javascript封装的类似java List类
- linux驱动开发 主设备号与次设备号
- 骨灰级泡妞高手白皮书之升级版