码迷,mamicode.com
首页 > 其他好文 > 详细

过山车

时间:2015-08-10 19:25:30      阅读:101      评论:0      收藏:0      [点我收藏+]

标签:

过山车 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u

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<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 
 5 using namespace std;
 6 
 7 #define N 1010
 8 
 9 int n, m, used[N], cnt[N], vis[N];
10 int maps[N][N];
11 
12 void init()
13 {
14     memset(used, 0, sizeof(used));
15     memset(cnt, 0, sizeof(cnt));
16     memset(maps, 0, sizeof(maps));
17     memset(vis, 0, sizeof(vis));
18 }
19 
20 int found(int u)
21 {
22     for(int i = 1; i <= n; i++)
23     {
24         if(maps[u][i] && !vis[i])
25         {
26             vis[i] = 1;   // 已经被访问过的不会被访问,
27 
28             if( !used[i] || found(used[i]))
29             {
30                 used[i] = u;
31                 return true;
32             }
33         }
34     }
35     return false;
36 }
37 
38 int main()
39 {
40     int k, a, b;
41 
42     while(scanf("%d", &k), k)
43     {
44         init();
45 
46         int ans = 0;
47 
48         scanf("%d%d", &m, &n);
49 
50         while(k--)
51         {
52             scanf("%d%d", &a, &b);
53             maps[a][b] = 1;
54             //used[b] = a;
55         }
56 
57         for(int i = 1; i <= m; i++)
58         {
59             memset(vis, 0, sizeof(vis));     //每次询问之前都要清0,在一次询问中,每个都是未被访问过的。
60             if(found(i))
61                 ans++;
62         }
63         printf("%d\n", ans);
64     }
65     return 0;
66 }

 


过山车

标签:

原文地址:http://www.cnblogs.com/Tinamei/p/4718739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!