#include<bits/stdc++.h>
#define fi first
#define se second
#define INF 0x3f3f3f3f
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pqueue priority_queue
#define NEW(a,b) memset(a,b,sizeof(a))
const double pi=4.0*atan(1.0);
const double e=exp(1.0);
const int maxn=1e5+;
typedef long long LL;
typedef unsigned long long ULL;
const LL mod=1e9+;
const ULL base=1e7+;
using namespace std;
struct room{
int s[];
}a[],b[];
inline int get(room x,room y){
int sum=;
for(int i=;i<;i++){
for(int j=;j<;j++){
if(x.s[i]==y.s[j]){
sum++;
}
}
}
return sum;
}
int cx[],cy[];
int ch[][];
bool visx[],visy[];
int lx[],ly[];
int n;
int inc;
inline bool dfs(int u){
visx[u]=;
for(int i=;i<n;i++){
if(!visy[i]){
int tmp=lx[u]+ly[i]-ch[u][i];
if(tmp==){
visy[i]=;
if(cy[i]==-||dfs(cy[i])){
cx[u]=i;
cy[i]=u;
return ;
}
}
else if(tmp>){
inc=min(inc,tmp);
}
}
}
return ;
}
inline void KM(){
memset(cy,-,sizeof(cy));
memset(cx,-,sizeof(cx));
for(int i=;i<n;i++){
lx[i]=-INF;
ly[i]=;
for(int j=;j<n;j++){
lx[i]=max(lx[i],ch[i][j]);
}
}
for(int u=;u<n;u++){
while(){
memset(visx,,sizeof(visx));
memset(visy,,sizeof(visy));
inc=INF;
if(dfs(u)) break;
for(int i=;i<n;i++){
if(visx[i]){
lx[i]-=inc;
}
}
for(int i=;i<n;i++){
if(visy[i]){
ly[i]+=inc;
}
}
}
}
}
int main(){
scanf("%d",&n);
for(int i=;i<n;i++){
for(int j=;j<;j++){
scanf("%d",&a[i].s[j]);
}
}
for(int i=;i<n;i++){
for(int j=;j<;j++){
scanf("%d",&b[i].s[j]);
}
}
for(int i=;i<n;i++){
for(int j=;j<n;j++){
ch[i][j]=get(a[i],b[j]);
}
}
KM();
int sum=;
for(int i=;i<n;i++){
sum+=ch[i][cx[i]];
}
sum=*n-sum;
printf("%d\n",sum);
}

room 二分图最大匹配KM的更多相关文章

  1. 带权二分图最大匹配KM算法

    二分图的判定 如果一个图是连通的,可以用如下的染色法判定是否二分图: 我们把X部的结点颜色设为0,Y部的颜色设为1. 从某个未染色的结点u开始,做BFS或者DFS .把u染为0,枚举u的儿子v.如果v ...

  2. UVA1349(带权二分图最大匹配 --> KM算法模板)

    UVA1349 题意:给定一些有向带权边,求出把这些边构造成一个个环,总权值最小 解法: 对于带权的二分图的匹配问题可以用通过KM算法求解. 要求最大权匹配就是初始化g[i][j]为0,直接跑就可以: ...

  3. SPOJ 4206 Fast Maximum Matching (二分图最大匹配 Hopcroft-Carp 算法 模板)

    题目大意: 有n1头公牛和n2头母牛,给出公母之间的m对配对关系,求最大匹配数.数据范围:  1 <= n1, n2 <= 50000, m <= 150000 算法讨论: 第一反应 ...

  4. HDU 2255 奔小康赚大钱(带权二分图最大匹配)

    HDU 2255 奔小康赚大钱(带权二分图最大匹配) Description 传说在遥远的地方有一个非常富裕的村落,有一天,村长决定进行制度改革:重新分配房子. 这可是一件大事,关系到人民的住房问题啊 ...

  5. Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配)

    Luogu 1559 运动员最佳匹配问题(带权二分图最大匹配) Description 羽毛球队有男女运动员各n人.给定2 个n×n矩阵P和Q.P[i][j]是男运动员i和女运动员j配对组成混合双打的 ...

  6. 【算法笔记】二分图与KM算法(当你试图只看蓝书学算法

    前言 呜,好久没写博客了,DDL 也有好多,一不留神就轮到我了呜. 看了一眼其它同学写的博客,什么数模啊,什么 CTF 啊,什么 Python 爬虫啊,感觉自己真是越来越菜了呜. 然后在我一愁莫展之际 ...

  7. POJ 2226二分图最大匹配

    匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图 ...

  8. POJ2239 Selecting Courses(二分图最大匹配)

    题目链接 N节课,每节课在一个星期中的某一节,求最多能选几节课 好吧,想了半天没想出来,最后看了题解是二分图最大匹配,好弱 建图: 每节课 与 时间有一条边 #include <iostream ...

  9. poj 2239 二分图最大匹配,基础题

    1.poj 2239   Selecting Courses   二分图最大匹配问题 2.总结:看到一个题解,直接用三维数组做的,很巧妙,很暴力.. 题意:N种课,给出时间,每种课在星期几的第几节课上 ...

随机推荐

  1. 微信小程序 setData 的坑(转)

    最近在使用微信小程序的setData时,遇到了以下问题.如下: 官网文档在使用setData()设置数组对象的某个元素的属性时,是这么使用的: Page({ data: { array: [{text ...

  2. 剑指Offer(四):重建二叉树

    说明: 1.本系列是根据<剑指Offer>这个系列做的一个小笔记. 2.直接动力是因为师兄师姐找工作很难,而且机械出生的我面试算法更难. 3.刚开始准备刷LeetCode.LintCode ...

  3. 在Java中多段执行adb或者shell的命令

    public void Bale (String logname){ //ant打包 System.out.println("-----------正在执行ant编译-----------& ...

  4. iOS获取当前路由信息

    导入头文件: #import <SystemConfiguration/CaptiveNetwork.h> - (void)currentWifiSSID {    // Does not ...

  5. 一、Jmeter环境介绍

    1.安装 从Apache网站http://jmeter.apache.org/download_jmeter.cgi下载二进制包. .tgz后缀名的为Linux使用的包 .zip后缀的为windows ...

  6. leetcode970

    public class Solution { public IList<int> PowerfulIntegers(int x, int y, int bound) { var list ...

  7. Dubbo 服务容错Hystrix

    一.服务者 1.pom <dependency> <groupId>org.springframework.cloud</groupId> <artifact ...

  8. flex 上下div固定, 中间div自适应

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  9. mysql每天凌晨0点准时启动taskeng.exe如何关闭

    MySQL弹出一个taskeng.exe. 内容如下:=====================Start Initialization====================mysql Instal ...

  10. WDA-3-ALV查询

    主要是梳理下WebDynpro For ABAP开发过程: 1.创建WebDynpro组件 2.创建WebDynpro应用 1.创建WebDynpro组件 1.1创建 路径:选择Package--&g ...