二分图匹配(匈牙利算法)
程序员文章站
2022-06-20 09:02:50
...
本质:利用增广路进行最大二分图匹配
代码实现:链式前向星+匈牙利算法
//链式前向星+匈牙利算法
#include<bits/stdc++.h>
using namespace std;
const int maxn=150;
const int maxm=150;
struct edge{
int end;
int next;
};
edge edges[maxm];
int n,m,eid,p[maxm],match[maxn];
bool vis[maxn];
void insert(int u,int v)
{
edges[eid].end=v;
edges[eid].next=p[u];
p[u]=eid++;
}
int dfs(int u)
{
for(int i=p[u];i!=-1;i=edges[i].next){
int v=edges[i].end;
if(!vis[v]){
vis[v]=true;
if(!match[v]||dfs(match[v])){
match[v]=u;
return true;
}
}
}
return false;
}
int main()
{
scanf("%d%d",&n,&m);
int a,b;
for(int i=1;i<=m;i++){
scanf("%d%d",&a,&b);
insert(a,b);
}
int ans=0;
for(int i=1;i<=n;i++){
memset(vis,false,sizeof(vis));
if(dfs(i)){
ans++;
}
}
printf("%d\n",ans);
return 0;
}
下一篇: 她是咸丰宠爱的女子,最后成晚清最高*者
推荐阅读
-
Leetcode算法题二分图Python3解法(88%时间 100%空间)
-
BZOJ1562: [NOI2009]变换序列(二分图 匈牙利)
-
洛谷P4589 [TJOI2018]智力竞赛(二分答案 二分图匹配)
-
HDU 1281 棋盘游戏(二分图匹配)
-
POJ 1358 Housing Complexes G++ 二分图匹配 没掌握
-
POJ 1719 Shooting Contest G++ 二分图匹配 没掌握
-
[Gym 101666]E - Easter Eggs (二分 + 二分图匹配 + 找最小点覆盖(原图最大团) )
-
洛谷 P3386 【模板】二分图匹配
-
( 判断二分图)Python3数据结构算法
-
P - 奔小康赚大钱 HDU - 2255(二分图最大权完美匹配)