博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu2063 二分图(基础题)
阅读量:5276 次
发布时间:2019-06-14

本文共 1178 字,大约阅读时间需要 3 分钟。

这个题目适合刚刚接触二分图的同学做哦:

       

给一个题目链接 。

题目大意,有K个男女匹配方式, 输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000
1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。

输出最大的男女匹配对数,匹配方式为,一个男生匹配一个女生;

         题目思路

      先让1与能匹配到的男生进行匹配,用一个数组记录与该男生匹配的女生是谁?  

如果该男生没有匹配直接匹配,即可。

如果该男生已经被摸个女生匹配,就让该男生匹配女生重新进行匹配。

否则 ,表示该女生匹配不到人。

      这个题目是 裸的二分图 直接用模板,

 算法是:  

#include
#include
#include
using namespace std;const int MM=505;bool adjmat[MM][MM],vis[MM];int boy_s_girl[MM];int k,girl,boy;int pipei(int people) //需要进行匹配的女生{ int i; for(i=1;i<=boy;i++) // 男生 { if(adjmat[people][i]&&!vis[i]) // 如果该女生可以与该男生匹配 且该男生未被匹配 { vis[i]=1; if(boy_s_girl[i]==0||pipei(boy_s_girl[i])) // 如果该男生未被匹配 ,或者 // 继续找该男生匹配到女生除他以外的其他男生 { boy_s_girl[i]=people; return 1; } } } return 0;}int main(){ int ans; while(scanf("%d",&k)!=EOF&&k) { scanf("%d %d",&girl,&boy); int i; memset(adjmat,0,sizeof(adjmat)); memset(boy_s_girl,0,sizeof(boy_s_girl)); ans=0; for(i=0;i
       

转载于:https://www.cnblogs.com/coded-ream/p/7207982.html

你可能感兴趣的文章
项目发布后 Tomcat中只有web-INF文件夹
查看>>
ASIHTTPRequest类库简介和使用说明
查看>>
纯css3开发的响应式设计动画菜单(支持ie8)
查看>>
struct2利用相关的Aware接口
查看>>
HTML哪些是块级元素,哪些是行内元素、
查看>>
C++11之thread线程
查看>>
for循环 1000以内质数之和
查看>>
Object 标签遮挡 Div 显示
查看>>
组合问题
查看>>
c#.net 获取时间日期年月日时分秒生成自动文件名格式
查看>>
WPF 中如何使用第三方控件 ,可以使用WindowsFormsHost 类
查看>>
Server.MapPath()目录详解
查看>>
系统镜像文件下载
查看>>
存储结构
查看>>
Codeforces Beta Round #25 (Div. 2 Only)E. Test
查看>>
leetcode 598. Range Addition II
查看>>
CentOS 6.4 配置LAMP 环境 与安装 phpmyadmin
查看>>
【代码笔记】iOS-在导航栏中显示等待对话框
查看>>
代码动态创建checkbox
查看>>
Linux centos ansible
查看>>