HDU2063 过山车 【二分图·最大匹配】
来源:互联网 发布:建模 软件 数据 开源 编辑:程序博客网 时间:2024/04/30 14:21
过山车
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 11477 Accepted Submission(s): 5051
Problem Description
RPG 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结束输入。
1<=N 和M<=500.接下来的K行,每行有两个数,分别表示女生Ai愿意和男生Bj做partner。最后一个0结束输入。
Output
对于每组数据,输出一个整数,表示可以坐上过山车的最多组合数。
Sample Input
6 3 31 11 21 32 12 33 10
Sample Output
3
Author
PrincessSnow
Source
RPG专场练习赛
匈牙利模板题。
#include <stdio.h>#include <string.h>#define maxn 510#define maxm 1010int k, m, n;int B[maxn];bool vis[maxn];int head[maxn], id;struct Node {int v, next;} E[maxm];void addEdge(int u, int v) {E[id].v = v; E[id].next = head[u];head[u] = id++;}void getMap() {int u, v; id = 0;memset(head, -1, sizeof(int) * (m + 1));while(k--) {scanf("%d%d", &u, &v);addEdge(u, v);}}int findPath(int k) {int i, v;for(i = head[k]; i != -1; i = E[i].next) {if(!vis[v=E[i].v]) {vis[v] = 1;if(B[v] == -1 || findPath(B[v])) {B[v] = k; return 1;}}}return 0;}int MaxMatch() {memset(B, -1, sizeof(int) * (n + 1));int i, ans = 0;for(i = 1; i <= m; ++i) {memset(vis, 0, sizeof(vis));ans += findPath(i);}return ans;}void solve() {printf("%d\n", MaxMatch());}int main() {// freopen("stdin.txt", "r", stdin);while(scanf("%d%d%d", &k, &m, &n) == 3) {getMap();solve();}return 0;}
0 0
- HDU2063 过山车 【二分图·最大匹配】
- HDU2063 过山车(二分图最大匹配)
- Hdu2063—过山车 二分图最大匹配
- 【二分图最大匹配】【HDU2063】过山车
- 【最大流,二分图匹配】【hdu2063】【过山车】
- HDU2063过山车 匈牙利二分图最大匹配
- hdu2063 过山车(二分图最大匹配基础)
- hdu2063 过山车【二分图匹配】
- hdu2063 过山车 二分图最大匹配 匈牙利算法
- 二分图最大匹配-增广路-hdu2063-过山车
- hdu2063 过山车 二分图/最大匹配(匈牙利算法)
- 【HDU2063】过山车(二分图最大匹配,匈牙利算法)
- HDU2063过山车(二分匹配)
- hdu2063 过山车 二分匹配
- 二分匹配 HDU2063 过山车
- HDU2063--过山车(二分匹配,二分图)
- 【二分图匹配】HDU2063-过山车【模板题】
- hdu2063[过山车] 二分图匹配 匈牙利算法
- @Override是什么意思?
- redis.conf参数说明
- struts2中action的传值方式
- 友情链接始终被标榜为高质量的外链
- 分数加减法
- HDU2063 过山车 【二分图·最大匹配】
- 怎样使一个Android应用不被杀死?
- c++中sizeof的用法
- &与&&,|与||区别
- Kset和Kobject
- Android绘图机制(四)自定义控件
- 14.10英语月总
- Leetcode:Remove Duplicates from Sorted Array与Remove Element
- ANDROID内存优化(大汇总——上)