這幾天知識點量太大,一時間不易吸收。先占個坑,慢慢填
分享一位博主dark_scope的思路,簡單易懂還有趣,雖然是初學,也馬馬虎虎懂了個大概
#define maxn 100000
int n,m;//n個男生 m個女生 二分圖:男生在左女生在右
bool line[maxn][maxn]; //兩者之間相互喜歡
bool used[maxn];//記錄是否被標記過
int girl[maxn];//記錄右邊女生所對應的男生的編號
bool find(int x)
} }
return false;
}int main()
}
主要用來解決帶權二分圖的匹配問題,在保證最大匹配的前提使得權值和最大。
步驟:
1.分別為左右點設定標桿,左邊初始為最大值,右邊設定為0。
2. 對於左邊的點,首先考慮權值最大的邊與之相連,連線的前提是左右點的標桿值和等於權值。 3.
存在矛盾就減少增廣路上左邊的權值同時增加增廣路右邊的權值 4.
重複以上步驟直到匹配結束。
參見博主
hehedad
的思路,寫的同樣很好嗷。
匈牙利演算法 KM演算法
匈牙利演算法 求最大匹配,那麼我們希望每乙個在左邊的點都盡量找到右邊的乙個點和它匹配。我們依次列舉左邊的點x的所有出邊指向的點y,若y之前沒有被匹配,那麼 x,y 就是一對合法的匹配,我們將匹配數加一,否則我們試圖給原來匹配y的x 重新找乙個匹配,如果x 匹配成功,那麼 x,y 就可以新增為一對合法...
匈牙利演算法,KM演算法
bool find int x return false 主程式 for i 1 i n i include include include include include include include include include include include include include...
傳統演算法 匈牙利演算法 KM演算法
做為乙個演算法工程師,除了了解各種nn網路結構,調的一手好引數,傳統演算法這一部分也不能拉下。因此著手寫這個系列,一方面加深自己對演算法的理解,另一方面 在實際業務中的應用,畢竟ac不是目的,融匯貫通的應用才是真目標。問題 剛入職某網約車平台的l同學被安排了個任務,如下圖所示,在一塊區域有m個司機和...