HDU 2063 过山车 (最大匹配,男女配对,二分图)

题意:中文题目

思路:匈牙利算法解决二分图最大匹配问题。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=505;
 4 int mapp[N][N]; //矩阵
 5 int girl[N];    //记录该女已分配的男编号
 6 int vis[N];     //标记是否已经尝试为其另分配
 7 int n, a, b, k, m;
 8
 9 int find(int x)
10 {
11     for(int i=1; i<=m; i++) //扫描所有妹子
12     {
13         if(mapp[x][i]&&!vis[i])  //有暧昧,未尝试为其另分配
14         {
15             vis[i]=1;   //已尝试
16             if( !girl[i] || find(girl[i]) )
17             {
18                 girl[i]=x;
19                 return true;
20             }
21         }
22     }
23     return false;
24 }
25
26 int hungary()
27 {
28     int cnt=0;
29     for(int i=1; i<=n; i++)
30     {
31         memset(vis,0,sizeof(vis));
32         if(find(i))    cnt++;
33     }
34     return cnt;
35 }
36
37 int main()
38 {
39     freopen("input.txt", "r", stdin);
40
41     while(scanf("%d",&k), k)
42     {
43         memset(vis,0,sizeof(vis));
44         memset(mapp,0,sizeof(mapp));
45         memset(girl,0,sizeof(girl));
46         scanf("%d%d",&m,&n);
47
48         for(int i=0; i<k; i++)  //2分图
49         {
50             scanf("%d%d",&b,&a);
51             mapp[a][b]=1;
52         }
53         printf("%d\n",hungary());
54     }
55     return 0;
56 }

AC代码

时间: 2024-11-06 12:20:29

HDU 2063 过山车 (最大匹配,男女配对,二分图)的相关文章

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

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

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 过山车(二分图匹配最大匹配数模板)

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

HDU 2063 过山车 二分图题解

一个男女搭配的关系图,看可以凑成多少对,基本和最原始的一个二分图谜题一样了,就是 一个岛上可以凑成多少对夫妻的问题. 所以是典型的二分图问题. 使用匈牙利算法,写成两个函数,就非常清晰了. 本程序还带分配释放程序,当然oj一般不需要.但是好的程序一定要. #include <stdio.h> #include <stdlib.h> int K, M, N, a, b; int *linker; bool **gra, *used; void initGraph() { gra =

hdu 2063 过山车(模板)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 21121    Accepted Submission(s): 9154 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求

hdu 2063 过山车(匈牙利算法模板)

http://acm.hdu.edu.cn/showproblem.php?pid=2063 过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14056    Accepted Submission(s): 6196 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车

hdu 2063 过山车 二分匹配(匈牙利算法)

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

HDU 2063 过山车(第一发二分匹配)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做partner和她同坐.但是,每个女孩都有各自的想法,举个例子把,Rabbit只愿意和XHD或PQK做partner,Grass只愿意和linle或LL做partner,PrincessSnow

HDU——2063 过山车

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

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