學習 匈牙利演算法

2021-08-28 21:27:04 字數 774 閱讀 8026

匈牙利演算法用於二分圖的最大匹配,為一種增廣路演算法。簡言之,就是不斷妥協。

安利一篇極好的blog趣寫演算法系列之–匈牙利演算法,網上的其他關於匈牙利演算法的講解,大都與這篇blog大同小異。

鄰接矩陣:最壞為o( n³)鄰接表:o( mn )

以下**以洛谷p2055 [zjoi2009]假期的宿舍為例

#include

using

namespace std;

int n,t;

int home[

100]

,is_know[

100]

[100

],match[

100]

,is_stu[

100]

,vis[

100]

;inline

void

init()

void

input()

for(

int i=

1;i<=n;i++

)for

(int j=

1;j<=n;j++)}

intdfs

(int x)}}

return0;

}int

main()

}if(flag==1)

printf

("^_^\n");

else

printf

("t_t\n");

}return0;

}

匈牙利演算法的學習

匈牙利演算法 基本概念 1 交錯路 設p是圖g 的一條路,如果 p的任意兩條相鄰的邊一條是屬於匹配 m的,另外一條不屬於匹配 m,就稱 p是一條交錯路。2 可增廣路 兩個端點都是非飽和點的交錯路叫做可增廣路。3 非飽和點 設vi是圖g 的乙個頂點,如果 vi 不與任意一條屬於匹配 m的邊相關聯,就稱...

模板 學習 匈牙利演算法

一直也沒有打過,所以對匈牙利演算法的認識一直停留在社會主義分老婆上 直接帖板子啦qwq隨手一搜匈牙利演算法講解都很好一定要有圖的那種,一般左邊是漢子右邊是妹子最後乙個是鳳姐 是和 高階指南 上學的,但我用的鄰接表存圖qwq 1 include2 include3 include4 using nam...

匈牙利演算法

匈牙利演算法 edmonds演算法 步聚 1 首先用 標記x中所有的非m頂點,然後交替進行步驟 2 3 2 選取乙個剛標記 用 或在步驟 3 中用 yi 標記 過的x中頂點,例如頂點xi,如果xi與y為同一非匹配邊的兩端點,且在本步驟中y尚未被標記過,則用 xi 去標記y中頂點y。重複步驟 2 直至...