0
点赞
收藏
分享

微信扫一扫

二分图各种模板

最不爱吃鱼 2022-08-31 阅读 104


二分图最大匹配

int line[maxn][maxn],used[maxn],nxt[maxn];//line[i][j]代表有没有边,used代表在这次匹配的过程种右边点用过没有,nxt为右边的归属

bool Find(int x){
for(int i = 1;i <= m;i++){//m为二分图右边的点个数
if(line[x][i]&&!used[i]){
used[i] = 1;
if(nxt[i] == 0||Find(nxt[i])){
nxt[i] = x;
return true;
}
}
}
return false;
}

int match(){
int sum = 0;
for(int i = 1;i <= n;i++){//n为二分图左边的点数,枚举每个点,看能不能匹配
memset(used,0,sizeof(used));
if(Find(i)) sum++;
}
return sum;


举报

相关推荐

0 条评论