二分匹配模板
1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #include <vector> 5 #include <algorithm> 6 using namespace std; 7 /****************************************************** 8 * 二分图匹配(匈牙利算法得邻接矩阵+dfs实现) 9 * 初始化:g[][]两边顶点的划分情况 10 * 建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹配 11 * g 没有边相连则初始化为0 12 * //un是匹配左边的顶点数,vn是匹配右边的顶点数 13 * 调用:res = hungray():输出最大匹配 14 * 优点:适用于稠密图,dfs找增广路,实现简洁易于理解 15 * 时间复杂度:O(V,E)。 16 * 顶点编号从0开始 17 const int maxn = 500 + 5; 18 int un, vn;//二分图中u, v的数目,使用前必须赋值 19 int g[maxn][maxn]; 20 int linker[maxn];//每个结点的匹配结点 21 bool used[maxn]; 22 23 bool dfs(int u) { 24 for(int v = 0;