伪匈牙利
查看原帖
伪匈牙利
174009
denominator楼主2022/3/13 21:40

本人认为如果有其他点未被匹配的优先匹配,可能可以使匈牙利算法跑得更快,实际上有好几个点 WA /kk

有谁能提供小一点的 hack 数据吗 qwq

code:

#include <bits/stdc++.h>
using namespace std;
const int N = 510;
int n, m, e, u, v, s, rev[N];
bool a[N][N], vis[N];
bool dfs (int u) {
	for (int v = 1; v <= m; v++) {
		if (a[u][v] && !vis[v]) {
			vis[v] = true;
			if (rev[v] == 0) {
				rev[v] = u;
				return true;
			}
		}
	}
	for (int v = 1; v <= m; v++) {
		if (a[u][v] && !vis[v]) {
			vis[v] = true;
			if (dfs (rev[v])) {
				rev[v] = u;
				return true;
			}
		}
	}
	return false;
}
int main () {
	cin >> n >> m >> e;
	for (int i = 1; i <= e; i++) {
		cin >> u >> v;
		a[u][v] = true;
	}
	for (int i = 1; i <= n; i++) {
		memset (vis, false, sizeof (vis));
		if (dfs (i)) {
			s++;
		}
	}
	cout << s;
	return 0;
}
2022/3/13 21:40
加载中...