题意:每个女人有感兴趣的k个男人,过山车两人一组,求最大匹配数。

解题关键:二分图最大匹配。匈牙利算法求解。

1、链式前向星建图

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#include<cmath>
#define maxn 250020
using namespace std;
typedef long long ll;
int n,m,k,a,b;
struct Edge{
int nxt;
int to;
int w;
}e[maxn];
int head[maxn],cnt;
void add_edge(int u,int v){
e[cnt].to=v;
e[cnt].nxt=head[u];
head[u]=cnt++;
}
int pre[maxn];
bool vis[maxn];
bool dfs(int u){
for(int i=head[u];i!=-;i=e[i].nxt){
int v=e[i].to;
if(!vis[v]){
vis[v]=true;
if(pre[v]==-||dfs(pre[v])){
pre[v]=u;
//pre[u]=v;
return true;
}
}
}
return false;
} int hungary(){
int ans=;
memset(pre,-,sizeof pre);
for(int i=;i<=m;i++) {
if(pre[i]==-) {
memset(vis,,sizeof vis);
if(dfs(i)) ans++;
}
}
return ans;
}
int main(){
while(scanf("%d",&k)!=EOF&&k){
memset(head, -, sizeof head);
cnt=;
scanf("%d%d",&m,&n);
for(int i=;i<k;i++){
scanf("%d%d",&a,&b);
add_edge(a,b+m);
}
int ans=hungary();
printf("%d\n",ans);
}
return ;
}

2、邻接矩阵建图

 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<iostream>
#include<cmath>
#define maxn 505
using namespace std;
typedef long long ll;
bool G[maxn][maxn];
int pre[maxn];
bool vis[maxn];
int n,m,k;
bool dfs(int u){
for(int i=;i<=n;i++){
if(G[u][i]&&!vis[i]){
vis[i]=true;
if(pre[i]==-||dfs(pre[i])){
pre[i]=u;
return true;
}
}
}
return false;
} int hungary(){
int num=;
memset(pre,-,sizeof pre);
for(int i=;i<=m;i++){
memset(vis,,sizeof vis);
if(dfs(i)) num++;
}
return num;
}
int main(){
int u,v;
while(scanf("%d",&k)!=EOF&&k){
scanf("%d%d",&m,&n);
memset(G,,sizeof G);
for(int i=;i<k;i++){
scanf("%d%d",&u,&v);
G[u][v]=;
}
int ans=hungary();
printf("%d\n",ans);
}
return ;
}

最新文章

  1. phpmyadmin #1045 - Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: NO)
  2. 用程序获取 Internet 时间 无通用性程序后的暂用办法
  3. Json序列化对象
  4. Memcached、Redis OR Tair
  5. jquery tab键转换
  6. sqlserver添加用户的时候出现 错误18456
  7. [置顶] iOS开发规范
  8. CALayer精讲
  9. 【BZOJ1823】 [JSOI2010]满汉全席
  10. 安卓高手之路之java层Binder
  11. 你真的理解Java的this和super吗?
  12. IntelliJ IDEA 12 创建Web项目 教程 超详细版
  13. Es6主要特征详解
  14. mybatis 使用auto mapping原理实现表间关联
  15. [洛谷P1357] 花园
  16. 「luogu3313」[SDOI2014] 旅行
  17. PAT甲级1078 Hashing【hash】
  18. 利用pandas对numpy数组进行简单的科学计算
  19. ReactiveX 学习笔记(21)使用 Rx.NET + ReactiveUI 进行 GUI 编程
  20. 洛谷.T21778.过年(线段树 扫描线)

热门文章

  1. C#下的摄像机标定
  2. ch.poweredge.ntlmv2-auth
  3. EasyNVR实现海康、大华NVR硬盘录像机Web无插件播放方案(支持取特定时间段视频流)
  4. vue 向后台提交数据
  5. 九度OJ 1158:买房子 (基础题)
  6. 如何使用RadioGroup和RadioButton实现FragmentTabHost导航效果?
  7. imagecopyresampled()改变图片大小后质量要比imagecopyresized()高。
  8. Java AQS详解(转)
  9. Docker实践中遇到的坑
  10. 应用索引技术优化SQL 语句(转)