HDU-1281 棋盘游戏 二分图匹配匈牙利算法
来源:互联网 发布:入耳式耳机推荐知乎 编辑:程序博客网 时间:2024/04/30 17:45
中文题,题目不用多说,先求出最大匹配,然后依次把每条边剪短,再取最大匹配,如果比最初的匹配值小,num++
#include <iostream>#include <cmath>#include <cstring>#include <algorithm>#include <queue>#include <cstdio>#include <cstdlib>using namespace std;const int maxn=111;int map[maxn][maxn];int link[maxn];int visit[maxn];int n,m,p;bool dfs(int k){for(int i=1;i<=m;i++){if(!visit[i]&&map[k][i]){visit[i]=1;int j=link[i];if(j==-1||dfs(j)){link[i]=k;return true;}}}return false;}int hungary(){int num=0;memset(link,-1,sizeof(link));//初始化 for(int i=1;i<=n;i++){memset(visit,0,sizeof(visit));if(dfs(i))//有增广路 {num++;//匹配数++ }}return num;}int main(){int x,y;int ans;int t=1;int num;while(scanf("%d%d%d",&n,&m,&p)!=EOF){memset(map,0,sizeof(map));for(int i=0;i<p;i++){scanf("%d %d",&x,&y);map[x][y]=1;}ans=hungary();//cout<<ans<<endl;num=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(map[i][j]==1){map[i][j]=0;if(hungary()<ans){num++;}map[i][j]=1;}}}printf("Board %d have %d important blanks for %d chessmen.\n",t++,num,ans); }return 0;}
0 0
- HDU-1281 棋盘游戏 二分图匹配匈牙利算法
- hdu 1281 棋盘游戏 二分图匹配 匈牙利算法 暴力
- HDU 1281 棋盘游戏(匈牙利算法 二分最大匹配)
- HDU 1281 棋盘游戏 二分匹配 匈牙利算法
- HDU ACM 1281 棋盘游戏->二分图最大匹配(匈牙利算法实践)
- hdu 1281 棋盘游戏 二分图匹配 匈牙利算法 解题报告
- HDU 1281 棋盘游戏(二分图匹配+匈牙利算法+模拟)
- hdu 1281 棋盘游戏 二分图匹配
- hdu 1281 棋盘游戏 (二分图匹配)
- 【二分图匹配】hdu 1281 棋盘游戏
- 棋盘游戏 - HDU 1281 二分图匹配
- hdu 1281 棋盘游戏(二分图匹配)
- HDU 1281 棋盘游戏 二分图匹配
- hdu 1281 棋盘游戏 二分图匹配;
- hdu 1281棋盘游戏 匈牙利算法
- HDU 1281 棋盘游戏(匈牙利算法)
- hdu 1281 棋盘游戏(二分匹配)
- hdu 1281 棋盘游戏 (二分匹配)
- 基于PocketSpinxAndroiDemo和javadrone api实现ARDrone语音控制
- [HDOJ 4888] Redraw Beautiful Drawings [最大流]
- 系统架构师秘籍(二)软件架构- 续
- hdu 1715 大菲波数
- 将字符串转换成数字
- HDU-1281 棋盘游戏 二分图匹配匈牙利算法
- tomcat环境变量设置
- C++重写(override)、重载(overload)、重定义(redefine)以及虚函数调用机制【个人总结】
- hive使用mysql作为元数据库时的编码问题
- 测量CT和保护CT的区别
- 基于node.js的ARDrone控制
- hdu 1753 大明A+B
- 从零开始—实践打开咖啡导出的jar程序(以“sushu.jar“为例)
- (JAVA初学)String类中常用方法的简单应用