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#include#include#include#define mt(a,b) memset(a,b,sizeof(a));
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const double e=2.718281828459;
const long long mod=1e9+7;
const int maxn = 305;
const int inf = 0x3f3f3f3f;
int love[maxn][maxn]; // 記錄每個妹子和每個男生的好感度
int ex_girl[maxn]; // 每個妹子的期望值
int ex_boy[maxn]; // 每個男生的期望值
bool vis_girl[maxn]; // 記錄每一輪匹配匹配過的女生
bool vis_boy[maxn]; // 記錄每一輪匹配匹配過的男生
int match[maxn]; // 記錄每個男生匹配到的妹子 如果沒有則為-1
int slack[maxn]; // 記錄每個漢子如果能被妹子傾心最少還需要多少期望值
int n;
bool dfs(int girl)
}else
}return false;
}int km()
}for (int i = 0; i < n; ++i)}}
int res = 0;
for (int i = 0; i < n; ++i)
res += love[ match[i] ][i];
return res;
}int main()
return 0;
}
匈牙利演算法 KM演算法
匈牙利演算法 求最大匹配,那麼我們希望每乙個在左邊的點都盡量找到右邊的乙個點和它匹配。我們依次列舉左邊的點x的所有出邊指向的點y,若y之前沒有被匹配,那麼 x,y 就是一對合法的匹配,我們將匹配數加一,否則我們試圖給原來匹配y的x 重新找乙個匹配,如果x 匹配成功,那麼 x,y 就可以新增為一對合法...
2019 7 22 匈牙利演算法,KM演算法
這幾天知識點量太大,一時間不易吸收。先占個坑,慢慢填 分享一位博主dark scope的思路,簡單易懂還有趣,雖然是初學,也馬馬虎虎懂了個大概 define maxn 100000 int n,m n個男生 m個女生 二分圖 男生在左女生在右 bool line maxn maxn 兩者之間相互喜歡...
傳統演算法 匈牙利演算法 KM演算法
做為乙個演算法工程師,除了了解各種nn網路結構,調的一手好引數,傳統演算法這一部分也不能拉下。因此著手寫這個系列,一方面加深自己對演算法的理解,另一方面 在實際業務中的應用,畢竟ac不是目的,融匯貫通的應用才是真目標。問題 剛入職某網約車平台的l同學被安排了個任務,如下圖所示,在一塊區域有m個司機和...