nyoj 月老的难题 (稳定婚姻问题)

百度了一下稳定婚姻问题。。 还有什么GS算法。。

以为什么高端的东西。。

尼玛结果代码跟上一题一模一样的好吗。。

醉了。。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<cstring>
 5 #include<string>
 6 #include<queue>
 7 #include<algorithm>
 8 #include<map>
 9 #include<iomanip>
10 #include<climits>
11 #include<string.h>
12 #include<cmath>
13 #include<stdlib.h>
14 #include<vector>
15 #include<set>
16 #define INF 1e7
17 #define MAXN 100010
18 #define maxn 50
19 #define maxm 1000
20 #define Mod 1000007
21 using namespace std;
22 typedef long long LL;
23
24
25 int T;
26 int u, v;
27 int n, m;
28 int ans;
29 vector<int> G[555];
30 int vis[10010];
31 int match[10010];
32
33 bool path(int u)
34 {
35     for (int i = 0; i < G[u].size(); ++i) {
36         int v = G[u][i];
37         if (true == vis[v]) continue;
38         vis[v] = true;
39         if (match[v] == -1 || path(match[v])) {
40             match[v] = u;
41             return true;
42         }
43     }
44     return false;
45 }
46
47 void hungarian()
48 {
49     ans = 0;
50     memset(match,-1,sizeof(match));
51     for (int i = 1; i <= n; ++i) {
52         memset(vis,0,sizeof(vis));
53         if (path(i)) ans++;
54     }
55 }
56
57 void run()
58 {
59     scanf("%d%d",&n,&m);
60     for (int i = 0; i <= n; ++i) {
61         G[i].clear();
62     }
63     for (int i = 0; i < m; ++i) {
64         scanf("%d%d",&u,&v);
65         G[u].push_back(v);
66     }
67     hungarian();
68     printf("%d\n",ans);
69
70 }
71 int main()
72 {
73     scanf("%d", &T);
74     while (T--)
75         run();
76     return 0;
77 }
时间: 2024-12-17 22:21:49

nyoj 月老的难题 (稳定婚姻问题)的相关文章

NYOJ 月老的难题 (最大二分图匹配,匈牙利算法)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=239 月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧. 假设男孩们分别

NYOJ 239 月老的难题 (深度优先遍历)

月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧. 假设男孩们分别编号为1~n,女孩们也分别编号为1~n. 输入 第一行是一个整数T,表示测试数据的组数(1<=T<=400) 每组

nyoj 239 月老的难题 【二分匹配之匈牙利】

月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧. 假设男孩们分别编号为1~n,女孩们也分别编号为1~n. 输入 第一行是一个整数T,表示测试数据的组数(1<=T<=400) 每组

nyoj 239 月老的难题

月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧. 假设男孩们分别编号为1~n,女孩们也分别编号为1~n. 输入 第一行是一个整数T,表示测试数据的组数(1<=T<=400)每组测

nyoj 239 月老的难题【匈牙利算法+邻接表】

月老的难题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘. 现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭. 现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧. 假设男孩们分别编号为1~n,女孩们也分别编号为1~n. 输入 第一行是一个整数T,表示测试数据的组数(1<=T<=400)每组测

(算法)稳定婚姻匹配

题目: 婚介所登记了N位男孩和N位女孩,每个男孩都对N个女孩的喜欢程度做了排序,每个女孩都对N个男孩的喜欢程度做了排序,你作为月老,能否给出稳定的牵手方案? 稳定的定义:如果男孩i和女孩a牵手,但男孩i对女孩b更喜欢,而女孩b的男朋友j拼不过男孩i,则没有力量阻碍男孩i和女孩b的私奔,这即是不稳定的. 思路: 1962 年,美国数学家 David Gale 和 Lloyd Shapley 发明了一种寻找稳定婚姻的策略.不管男女各有多少人,不管他们各自的偏好如何,应用这种策略后总能得到一个稳定的婚

【bzoj2140】: 稳定婚姻 图论-tarjan

[bzoj2140]: 稳定婚姻 哎..都是模板题.. 一眼看过去 哇 二分图哎 然后发现好像并不能匈牙利算法 自己xjb画两张图,发现二分图左向右连配偶的边,然后右向左连交往过的边 然后如果Bi Gi在同一个强连通分量里面就一定可以在Bi Gi离婚以后再增广一次 最开始用map维护一下名字就好了 1 /* http://www.cnblogs.com/karl07/ */ 2 #include <cstdlib> 3 #include <cstdio> 4 #include &l

uva 1175 Ladies&#39; Choice (稳定婚姻问题)

uva 1175 Ladies' Choice Background Teenagers from the local high school have asked you to help them with the organization of next year?s Prom. The idea is to find a suitable date for everyone in the class in a fair and civilized way. So, they have or

UVALive 3989Ladies&#39; Choice(稳定婚姻问题)

题目链接 题意:n个男生和女生,先是n行n个数,表示每一个女生对男生的好感值排序,然后是n行n列式每一个男生的好感值排序,输出N行,即每个女生在最好情况下的男生的编号 分析:如果是求女生的最好情况下,就要从女生开始选,这样女生都是从最好的到不好的来选,而男生却相反--只能娶那些自己有可能最没好感的女生,因为男生是被动的,他最喜欢的女生不见的会向他求婚. 刘汝佳书上命名错了,so也跟着把男生当成女生了,懒得改命名了, 1 #include <iostream> 2 #include <cs