hdu2063过山车(最大匹配)

过山车

Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 10455 Accepted Submission(s): 4607

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
#include<stdio.h>
#include<string.h>
int map[505][505],vist[505],match[505],m;
int find(int i)
{
    for(int j=1;j<=m;j++)
    if(!vist[j]&&map[i][j])
    {
        vist[j]=1;
        if(match[j]==0||find(match[j]))
        {
            match[j]=i; return 1;
        }
    }
    return 0;
}
int main()
{
    int k,n,a,b;
    while(scanf("%d",&k)>0&&k)
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        map[i][j]=0;
        while(k--)
        {
            scanf("%d%d",&a,&b);
            map[a][b]=1;
        }
        int ans=0;
        memset(match,0,sizeof(match));
        for(int i=1;i<=n;i++)
        {
            memset(vist,0,sizeof(vist));
            ans+=find(i);
        }
        printf("%d\n",ans);
    }
}

hdu2063过山车(最大匹配)

时间: 2024-08-08 06:43:22

hdu2063过山车(最大匹配)的相关文章

HDU2063 过山车 【二分图&#183;最大匹配】

过山车 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今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做pa

过山车(最大匹配)

过山车 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

HDU2063过山车

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

hdu-2063 过山车(二分图)

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

hdu2063 过山车 二分图最大匹配

男女进行二分图匹配,裸题 1 #include<stdio.h> 2 #include<string.h> 3 int now,head[1001],next[1001],point[1001],visit[1001],match[1001]; 4 5 void add(int x,int y){ 6 next[++now]=head[x]; 7 head[x]=now; 8 point[now]=y; 9 } 10 11 int dfs(int k) 12 { 13 for(in

Hdu_2063 过山车 -最大匹配(邻接表版)

题目:就是最大匹配了 /************************************************ Author :DarkTong Created Time :2016/8/1 12:53:27 File Name :Hdu2063.cpp *************************************************/ #include <cstdio> #include <cstring> #include <vector>

HDU 2063 过山车( 最大匹配 )

题意:中文 思路:最大匹配 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<set> #include<map> #include<string> #include<cstring> #include<stack> #include<queue> #include<ve

hdu 2063 过山车 (最大匹配 匈牙利算法模板)

匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2063 题目大意: 中文题目,点进去马上知道. 解题思路: 这道题目就是求最大匹配数目,直接套用匈牙利算法模板,这个算法大概原则就是:有机会上,没有机会创造机会也要上. 代码: 1 #i

hdu2063 过山车

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2063 1 #include<iostream> 2 #include<math.h> 3 #include<stdio.h> 4 #include<string.h> 5 #include<stdlib.h> 6 using namespace std; 7 const int N=510; 8 int match[N]; 9 int a[N][N];