博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 2063 过山车
阅读量:4570 次
发布时间:2019-06-08

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

Problem DescriptionRPG girls今天和大家一起去游乐场玩,最终能够坐上梦寐以求的过山车了。但是,过山车的每一排仅仅有两个座位,并且还有条不成文的规矩,就是每一个女生必须找个个男生做partner和她同坐。

但是,每一个女孩都有各自的想法。举个样例把,Rabbit仅仅愿意和XHD或PQK做partner。Grass仅仅愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner。

考虑到经费问题,boss刘决定仅仅让找到partner的人去坐过山车,其它的人,嘿嘿,就站在以下看着吧。

聪明的Acmer,你能够帮忙算算最多有多少对组合能够坐上过山车吗? Input 输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000 1<=N 和M<=500.接下来的K行,每行有两个数。分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。 Output 对于每组数据,输出一个整数,表示能够坐上过山车的最多组合数。 Sample Input 6 3 3 1 1 1 2 1 3 2 1 2 3 3 1 0 Sample Output 3

题目大意:这是一个中文题。

。。。我没有本事把它翻译成英文啊^

解题思路:就是一个二分图的最大匹配,套模板即可。。。

上代码吧:有具体的凝视

/* **************************************************************************//二分图匹配(匈牙利算法的DFS实现)//初始化:g[][]两边顶点的划分情况//建立g[i][j]表示i->j的有向边就能够了,是左边向右边的匹配//g没有边相连则初始化为0//uN是匹配左边的顶点数,vN是匹配右边的顶点数//调用:res=hungary();输出最大匹配数//长处:适用于稠密图,DFS找增广路,实现简洁易于理解//时间复杂度:O(VE)//***************************************************************************///顶点编号从0開始的#include 
#include
#include
#include
using namespace std;const int MAXN = 550;int uN, vN;//u,v数目int g[MAXN][MAXN];int linker[MAXN];bool used[MAXN];bool dfs(int u)//从左边開始找增广路径{ int v; for(v=0; v<=vN; v++)//这个顶点编号从0開始。若要从1開始须要改动 if(g[u][v] && !used[v]) { used[v] = true; if(linker[v]==-1 || dfs(linker[v])) {
//找增广路,反向 linker[v] = u; return true; } } return false;//这个不要忘了。常常忘记这句}int hungary(){ int res = 0; int u; memset(linker, -1, sizeof(linker)); for(u=0; u<=uN; u++) { memset(used,0,sizeof(used)); if(dfs(u)) res++; } return res;}int main(){ int k; while(cin>>k,k) { cin>>uN>>vN; memset(g, 0, sizeof(g)); while(k--) { int u, v; cin>>u>>v; g[u][v] = 1; } //memset(linker, -1, sizeof(linker)) printf("%d\n",hungary()); } return 0;}

转载于:https://www.cnblogs.com/brucemengbm/p/7002236.html

你可能感兴趣的文章
C语言—— for 循环
查看>>
IBM lotus9.0测试版即将公测
查看>>
xml常用方法
查看>>
Cube Stacking(并差集深度+结点个数)
查看>>
AndroidStudio3更改包名失败
查看>>
jq 删除数组中的元素
查看>>
js URL中文传参乱码
查看>>
Leetcode 367. Valid Perfect Square
查看>>
UVALive 3635 Pie(二分法)
查看>>
win系统查看自己电脑IP
查看>>
Backup&recovery备份和还原 mysql
查看>>
一道面试题及扩展
查看>>
Unity 3D 我来了
查看>>
setup elk with docker-compose
查看>>
C++ GUI Qt4学习笔记03
查看>>
Java基础回顾 —反射机制
查看>>
c# 前台js 调用后台代码
查看>>
2017-02-20 可编辑div中如何在光标位置添加内容
查看>>
$.ajax()方法详解
查看>>
jquery操作select(增加,删除,清空)
查看>>