hdu2063 二分图(基础题)
这个题目适合刚刚接触二分图的同学做哦:
给一个题目链接 点击打开链接。
题目大意,有K个男女匹配方式, 输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000
1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。
输出最大的男女匹配对数,匹配方式为,一个男生匹配一个女生;
题目思路:
先让1与能匹配到的男生进行匹配,用一个数组记录与该男生匹配的女生是谁?
如果该男生没有匹配直接匹配,即可。
如果该男生已经被摸个女生匹配,就让该男生匹配女生重新进行匹配。
否则 ,表示该女生匹配不到人。
这个题目是 裸的二分图 直接用模板,
算法是: 匈牙利算法
#include<iostream>
#include<string.h>
#include<cstdio> 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<k;i++)
{
int a,b;
scanf("%d %d",&a,&b);
adjmat[a][b]=true;
}
for(i=1;i<=girl;i++)
{
memset(vis,0,sizeof(vis));
ans+=pipei(i);
}
cout<<ans<<endl;
}
return 0;
}
hdu2063 二分图(基础题)的更多相关文章
- Android测试基础题(三)
今天接着给大家带来的是Android测试基础题(三). 需求:定义一个排序的方法,根据用户传入的double类型数组进行排序,并返回排序后的数组 俗话说的好:温故而知新,可以为师矣 packag ...
- 小试牛刀3之JavaScript基础题
JavaScript基础题 1.让用户输入两个数字,然后输出相加的结果. *prompt() 方法用于显示可提示用户进行输入的对话框. 语法: prompt(text,defaultText) 说明: ...
- 小试牛刀2:JavaScript基础题
JavaScript基础题 1.网页中有个字符串“我有一个梦想”,使用JavaScript获取该字符串的长度,同时输出字符串最后两个字. 答案: <!DOCTYPE html PUBLIC &q ...
- HDU 1301 Jungle Roads (最小生成树,基础题,模版解释)——同 poj 1251 Jungle Roads
双向边,基础题,最小生成树 题目 同题目 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stri ...
- nyist oj 79 拦截导弹 (动态规划基础题)
拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描写叙述 某国为了防御敌国的导弹突击.发展中一种导弹拦截系统.可是这样的导弹拦截系统有一个缺陷:尽管它的第一发炮弹可以 ...
- 【二分图裸题】poj1325机器调度
题目大意:有两个机器A和B,A机器有n个模式,B机器有m个模式,两个机器最初在0模式 然后有k个作业,每个作业有三个参数i,a,b i代表作业编号,a和b代表第i作业要么在A机器的a模式下完成[或者] ...
- linux面试题-基础题1
第1章 基础题1 1.1 在装系统创建Linux分区时,一般至少需要创建两个分区( ) A.FAT.NTFS B. /usr.swap C. /boot.swap D.swap./ 1.2 ...
- Java面试题以及答案精选(架构师面试题)-基础题1
基础题 一.String,StringBuffer, StringBuilder 的区别是什么?String为什么是不可变的?1. String是字符串常量,StringBuffer和StringBu ...
- C++笔试题2(基础题)
温馨提醒:此文续<C++笔试题(基础题)> (112)请写出下列程序的输出内容 代码如下: #include <iostream> using namespace std; c ...
随机推荐
- php生成压缩包
$filename = "./" . date ( 'YmdH' ) . ".zip"; // 最终生成的文件名(含路径) // 生成文件 $zip = new ...
- hanzi 全拼音 qu de
Function pinyin(ByVal mystr As String, Optional types As Byte = 0) As StringDim temp As String, i ...
- oracle分区表备份恢复
https://blog.csdn.net/jc_benben/article/details/51546815
- 大整数类BIGN的设计与实现 C++高精度模板
首先感谢刘汝佳所著的<算法竞赛入门经典>. 众所周知,C++中储存能力最大的unsigned long long 也是有着一个上限,如果我们想计算非常大的整数时,就不知所措了,所以,我写了 ...
- Java面试题总结之数据结构、算法和计算机基础(刘小牛和丝音的爱情故事1)
Java面试题总结之数据结构.算法和计算机基础(刘小牛和丝音的爱情故事1)mp.weixin.qq.com 全文字数: 1703 阅读时间: 大约6 分钟 刘小牛是一名Java程序员,由于天天9 ...
- TFS2018 获取所有Build变量及变量值
添加一个Command Line 步骤,Tool设置为 cmd ,并设置参数为 /k set 注意:若在执行时出现如下报错信息,Tool的值改成 cmd.exe --20T02::.0416435Z ...
- 微信小程序,不同的输入框显示
<!--pages/index/Component/TextInput/TextInput.wxml--> <view class="viewTitle"> ...
- 线性表的顺序存储和链式存储的实现(C)
//线性表的顺序存储 #include <stdio.h>typedef int DataType;#define MaxSize 15//定义顺序表typedef struct { Da ...
- MRP Force Reservation的作用
生产单根据BOM计算出相应的物料需求,生产领料单stock.picking ( internal moves) Stock.picking使用工作流自动计算库存量,如果库存量够,则使用 test_as ...
- SDIO总线(一)
SDIO接口是在SD内存卡接口的基础上发展起来的接口.SDIO接口兼容曾经的SD内存卡.而且能够连接SDIO接口的设备. SDIO1.0标准定义了两种类型的SDIO卡: 1.全速的SDIO卡.传输率能 ...