二分图最大权匹配的代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
#define N 100
class Solution {
public:
int S[N];
int left[N]; // the id in left that matches an id in the right column
int T[N];
int lx[N];
int ly[N];
int matrix[N][N];
int n;
bool dfs(int u) {
S[u] = 1;
for (int i = 1; i <= n; i++) {
if (!T[i] && lx[u]+ly[i]==matrix[u][i]) {
T[i] = 1;
if (left[i]==0 || dfs(left[i])) {
left[i] = u;
return true;
}
}
}
return false;
}
int min(int a, int b) { return a < b ? a : b; }
void update() {
int a = (1<<30);
for (int i = 1; i <= n; i++) {
if (S[i]==