結束簡單圖論演算法,撒花(哈哈哈)
這時匈牙利演算法就可以當作月老專用演算法
1 先選乙個陣營
2 進行連線,如果有人,這看他的伴侶,能不能換乙個成立,就換
3 以此類推 , 得最大匹配數
模板一定不要背,理解就可以打出來,不需要硬背,我反正都是理解記憶
int n1, n2;
// n1表示第乙個集合中的點數,n2表示第二個集合中的點數
int h[n]
, e[m]
, ne[m]
, idx;
// 鄰接表儲存所有邊,匈牙利演算法中只會用到從第乙個集合指向第二個集合的邊,所以這裡只用存乙個方向的邊
int match[n]
;// 儲存第二個集合中的每個點當前匹配的第乙個集合中的點是哪個
bool st[n]
;// 表示第二個集合中的每個點是否已經被遍歷過
bool
find
(int x)}}
return
false;}
// 求最大匹配數,依次列舉第乙個集合中的每個點能否匹配第二個集合中的點
int res =0;
for(
int i =
1; i <= n1; i ++
)
肯定很抽象,沒關係(**很簡單)
hdu一道月老題(模板題),看看吧,哈哈
->過山車
**
#include
#include
using
namespace std;
const
int n=
510;
int n,m,k;
int h[n]
,e[n*2]
,ne[n*2]
,idx;
bool st[n]
;int cut[n]
;void
add(
int a,
int b)
bool
find
(int x)}}
return
false;}
intmain()
int ans=0;
for(
int i=
1;i<=n;i++)}
cout<
}return0;
}
還有一道模板題
p2071 座位安排
**
#include
#include
#include
#include
using
namespace std;
const
int n=
8010
;int h[n]
,e[n*2]
,ne[n*2]
,idx;
int macth[n]
;bool st[n]
;int n;
void
add(
int a,
int b)
bool
find
(int x)}}
return
false;}
intmain()
int ans=0;
for(
int i=
1;i<=
2*n;i++
) cout<
return0;
}
再來一道抽像的最大匹配問題
棋盤覆蓋 **
#include
#include
#include
#define x first
#define y second
using
namespace std;
typedef pair<
int,
int> pii;
const
int n=
110;
pii cut[n]
[n];
bool g[n]
[n];
bool st[n]
[n];
int n,m;
int fx=
,fy=
;int
find
(int xx,
int yy)
;return
true;}
}}return
false;}
intmain()
int ans=0;
for(
int i=
1;i<=n;i++
)for
(int j=
1;j<=n;j++)if
((i+j)&1
&&!g[i]
[j])
cout<
return0;
}
詳細解析可以看鏈結的題解,我比較懶
還有一道簡單的棋盤問題
車的放置 **
#include
#include
#include
using
namespace std;
const
int n=
210;
bool g[n]
[n];
bool st[n]
;int cut[n]
;int n,m,t;
bool
find
(int u)}}
return
false;}
intmain()
int ans=0;
for(
int i=
1;i<=n;i++
) cout<
return0;
}
就這麼多吧,最大匹配問題模板不會難,在於怎麼轉換問題
qwq萌新,舉手敬禮
匈牙利演算法(最大匹配問題)
匈牙利演算法 二分圖的最大匹配可以轉換為乙個網路流的問題,但是我們一般使用匈牙利演算法,這種演算法更易於理解,方便編寫。介紹這個演算法之前,首先要介紹一些必要的概念。交錯路 從乙個未匹配點出發,依次遍歷未匹配邊 匹配邊 未匹配邊,這樣交替下去,這條路徑稱為交錯路。增廣路 從乙個未匹配點出發,依次遍歷...
匈牙利演算法 匹配問題
假期 2020.01 27完全匹配 如果乙個匹配中,x y 且匹配數等於 x 則稱此匹配為完全匹配 特別的當 x y 時稱為完美匹配。常見實現步驟 用途 主要用於解決一些與二分圖匹配有關的問題,即部圖匹配最常見的演算法。某公司存在分工問題,一定數量的女員工與男員工搭配,如何搭配才能實現人員的最大利益...
最大匹配 過山車 匈牙利
rpg girls今天和大家一起去遊樂場玩,終於可以坐上夢寐以求的過山車了。可是,過山車的每一排只有兩個座位,而且還有條不成文的規矩,就是每個女生必須找個個男生做partner和她同坐。但是,每個女孩都有各自的想法,舉個例子把,rabbit只願意和xhd或pqk做partner,grass只願意和l...