过山车

题意 男女匹配,最多组合数

题解 匈牙利算法

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结束输入。

Output
对于每组数据,输出一个整数,表示可以坐上过山车的最多组合数。

Sample Input
6 3 3
1 1
1 2
1 3
2 1
2 3
3 1
0

Sample Output
3

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define N 1000
 4 int map[N][N],visit[N],mark[N];
 5 int k,n,m;
 6
 7 bool dfs(int u)//寻找从u出发的对应项出的可增广路
 8 {
 9     for(int i=1;i<=n;i++)//(从邻接表中列举u能关联到顶点j)
10     {
11         if(map[u][i]&&!visit[i])//i不在增广路上
12         {
13             visit[i]=true;//把i加入增广路
14             if(!mark[i]||dfs(mark[i]))//i是未盖点或从i的对应项出发有可增广路
15             {
16                 mark[i]=u;//修改i的对应项为u
17                 return true;//则从u的对应项出有可增广路,返回true
18             }
19         }
20     }
21     return false;//则从u的对应项出没有有可增广路,返回false
22 }
23
24 int main()
25 {
26     int i,j,a,b;
27     while(~scanf("%d",&k)&&k)
28     {
29         scanf("%d %d",&m,&n);
30         for(i=1;i<=m;i++)
31             for(j=1;j<=n;j++)
32                 map[i][j]=false;
33             for(i=1;i<=k;i++)
34             {
35                 scanf("%d %d",&a,&b);
36                 map[a][b]=true;
37             }
38             int ans=0;
39             memset(mark,0,sizeof(mark));
40             for(i=1;i<=m;i++)
41             {
42                 memset(visit,0,sizeof(visit));
43                 if(dfs(i))
44                     ans++;//匹配数++
45             }
46             printf("%d\n",ans);
47     }
48     return 0;
49 }
时间: 2024-08-22 04:16:01

过山车的相关文章

旅游 - 珠海长隆海洋王国 - 鹦鹉过山车

说来惭愧,三十多岁的人从来没坐过过山车.以往没坐过不是因为胆小,只是没有机会,几年前有一次已经把车开到了欢乐谷门口,但硬是被无穷无尽的长队给吓退.难得这次有机会,就争取感受一把.早上进园的时候已经很晚,原本还担心要排很久的队伍,实际走到那个僻静的入口时并没有看到什么人.穿过长长长长的幽深小径之后来到上车点.前面只稀稀拉拉排了十几个人,等了一辆车就排到了.本来想坐第一排最外侧的位置,可惜放眼镜的时候被人抢坐,只能坐在第三排的外侧.耳边都是在说什么很害怕不想坐了,我也稍微有了一点紧张.坐上之后盖好固

[ACM] HDU 2063 过山车 (二分图,匈牙利算法)

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11509    Accepted Submission(s): 5066 Problem Description RPG girls今天和大家一起去游乐场玩,最终能够坐上梦寐以求的过山车了.但是,过山车的每一排仅仅有两个座位,并且还有条不成文的规矩,就是每一个女生必须找个个男生做

hdu 2063 过山车

Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐.但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow愿意和水域浪子或伪酷儿做partner.考虑到经费问题,boss刘决定只让找到partner的人去坐过山

hdoj 2063 过山车 【二分匹配之匈牙利算法】

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11520    Accepted Submission(s): 5072 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做pa

HDU 2063:过山车(二分匹配,匈牙利算法)

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9745    Accepted Submission(s): 4294 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

杭电 2063 过山车

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9749    Accepted Submission(s): 4296 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

HDU2063_过山车(二分图/最大匹配)

解题报告 题目传送门 题意: 求最大的男女匹配数目. 思路: 简单的最大匹配. #include <cstdio> #include <cstring> #include <iostream> using namespace std; int k,n,m,mmap[1100][1100],vis[550],pre[550]; int dfs(int x) { for(int i=1;i<=n;i++){ if(!vis[i]&&mmap[x][i]

过山车(最大匹配)

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15107    Accepted Submission(s): 6623 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找 个个男生做pa

过山车(二分图匹配)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 hdu_2063:过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 14852    Accepted Submission(s): 6544 Problem Description RPG girls今天和大家一起去游乐场玩,终

过山车(杭电2063)

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 11503    Accepted Submission(s): 5062 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做pa