HDU 1522 Marriage is Stable 稳定婚姻匹配
http://acm.hdu.edu.cn/showproblem.php?pid=1522
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define me(a,b) memset(a,b,sizeof(a))
#define N 552
typedef long long ll;
using namespace std; int girl[N],boy[N],n,b[N][N],g[N][N];
bool vis[N][N];
string s,e;
map<string,int>bb,gg;
string bbb[N],ggg[N]; void init()
{
me(girl,-);
me(boy,-);
me(vis,);
bb.clear();
gg.clear();
} void stable_march()
{
queue<int>q;
for(int i=;i<n;i++)
q.push(i);
while(!q.empty())
{
int f=q.front();
q.pop();
for(int i=;i<n;i++)
{
int tmp=b[f][i];
if(vis[f][tmp])
{
continue;
}
vis[f][tmp]=;
if(girl[tmp]==-)
{
girl[tmp]=f;
boy[f]=tmp;
break;
}
else if(g[tmp][girl[tmp]]<g[tmp][f])
{
q.push(girl[tmp]);
girl[tmp]=f;
boy[f]=tmp;
break;
}
}
}
} int main()
{
//freopen("in.txt","r",stdin);
while(cin>>n)
{
init();
for(int i=;i<n;i++)
{
cin>>s;
bbb[i]=s;
bb[s]=i;
if(i==)
for(int j=;j<n;j++)
{
cin>>e;
b[i][j]=j;
gg[e]=j;
ggg[j]=e;
}
else
for(int j=;j<n;j++)
{
cin>>e;
b[i][j]=gg[e];
}
}
for(int i=;i<n;i++)
{
cin>>s;
int t=gg[s];
for(int j=n-;j>-;j--)
{
cin>>e;
g[t][bb[e]]=j;
}
}
stable_march();
for(int i=;i<n;i++)
{
cout<<bbb[i]<<' '<<ggg[boy[i]]<<endl;
}
cout<<endl;
}
}
HDU 1522 Marriage is Stable 稳定婚姻匹配的更多相关文章
- HDU 1522 Marriage is Stable 【稳定婚姻匹配】(模板题)
<题目链接> 题目大意: 给你N个男生和N个女生,并且给出所有男生和女生对其它所有异性的喜欢程度,喜欢程度越高的两个异性越容易配对,现在求出它们之间的稳定匹配. 解题分析: 稳定婚姻问题的 ...
- HDU1522 稳定婚姻匹配 模板
Marriage is Stable Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 【HDU1914 The Stable Marriage Problem】稳定婚姻问题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1914 题目大意:问题大概是这样:有一个社团里有n个女生和n个男生,每位女生按照她的偏爱程度将男生排序, ...
- POJ 3487 The Stable Marriage Problem(稳定婚姻问题 模版题)
Description The stable marriage problem consists of matching members of two different sets according ...
- HDU1914 稳定婚姻匹配
The Stable Marriage Problem Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (J ...
- HDU - 3081 Marriage Match II 【二分匹配】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3081 题意 有n对男女 女生去选男朋友 如果女生从来没和那个男生吵架 那么那个男生就可以当她男朋友 女 ...
- 【稳定婚姻问题】【HDU1435】【Stable Match】
2015/7/1 19:48 题意:给一个带权二分图 求稳定匹配 稳定的意义是对于某2个匹配,比如,( a ---- 1) ,(b----2) , 如果 (a,2)<(a,1) 且(2,a)& ...
- @hdu - 6687@ Rikka with Stable Marriage
目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个稳定婚姻匹配问题,其中第 i 个男生与第 j 个女生之间 ...
- 最大团&稳定婚姻系列
[HDU] 1530 Maximum Clique 1435 Stable Match 3585 maximum shortest distance 二分+最大团 1522 Marriage is ...
随机推荐
- LeetCode【112. 路径总和】
思路就是从根节点开始向下选节点,依次与sum比较大小,若小,则向下选左右节点其中一个,若大,则接下来判断是否是叶子节点,若是,则返回false 若不是,则上一步选另一节点,再将上述重新执行. 对于叶子 ...
- windows下获取文件描述
一 背景 前几天, 在公司写的获取文件描述的一段小程序出现了点小问题, 对于一般文件是正常的, 对于win10 C:\Program Files\WindowsApps目录下的通用程序,就是死活获取不 ...
- Linux常用命令 笔记
Linux常用命令 笔记 一.文件处理命令 1. ls命令:显示目录文件 -a 显示所有文件,包括隐藏文件.(all) ...
- 开发环境 pyenv
pyeny githup地址:https://github.com/pyenv/pyenv/ 安装时使用pyeny提供安装工具进行安装 githup 地址:https://github.com/pye ...
- JDK中所包含的设计模式
本文主要是归纳了JDK中所包含的设计模式,包括作用和其设计类图.首先来个总结,具体的某个模式可以一个一个慢慢写,希望能对研究JDK和设计模式有所帮助. 一.设计模式是什么(1)反复出现问题的解决方案( ...
- 二、Python-运算符、控制及循环语句
一.运算符 算数运算符 +:加 -:减 *:乘 /:除 ~:取反 %:求余数(只返回余数) //:取整数(只返回整数部分) **:幂,返回x的y次方 赋值运算符:= 比较运算符:<小于.< ...
- Python:笔记2
[文件操作] 1.fileopen = open(file).readlines() //type是list 2.filewrite = open(file,'w') filewrite ...
- laravel-- facade 实现CURD
路由内需配置 Route::any('test1','StudentController@test1');原生CURD写法 public function test1() {// 查找// $stud ...
- Git常用命令(一)
转自2.1 Git 基础 - 获取 Git 仓库 获取帮助 `$ git help <verb> $ git <verb> --help $ man git-<verb& ...
- C++使用指针的优点
使用指针可以带来如下的好处: (1)可以提高程序的编译效率和执行速度,使程序更加简洁. (2)通过指针被调用函数可以向调用函数处返回除正常的返回值之外的其他数据,从而实现两者间的双向通信. (3)利用 ...