匈牙利演算法用於二分圖的最大匹配,為一種增廣路演算法。簡言之,就是不斷妥協。
安利一篇極好的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 直至...