hdu 1281 棋盘游戏 二分图匹配
来源:互联网 发布:淘宝网发布商品怎么分 编辑:程序博客网 时间:2024/05/01 01:48
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 110bool edge[N][N];int linker[N];bool vis[N];int n,m;struct node{int r,c;}s[100*N];bool dfs(int u){for(int i=1;i<=m;i++){if(edge[u][i]&&!vis[i]){vis[i]=1;if(linker[i]==-1||dfs(linker[i])){linker[i]=u;return true;}}}return false;}int hungary(){int cnt=0;memset(linker,-1,sizeof(linker));for(int i=1;i<=n;i++){memset(vis,0,sizeof(vis));if(dfs(i)) cnt++;}return cnt;}int main(){int k,f=1;while(scanf("%d%d%d",&n,&m,&k)!=EOF){int r,c;memset(edge,0,sizeof(edge));for(int i=0;i<k;i++){scanf("%d%d",&r,&c);s[i].r=r;s[i].c=c;edge[r][c]=1;}int maxn=hungary();int cnt=0;for(int i=0;i<k;i++){r=s[i].r;c=s[i].c;edge[r][c]=0;int temp=hungary();if(temp!=maxn) cnt++;edge[r][c]=1;}printf("Board %d have %d important blanks for %d chessmen.\n",f++,cnt,maxn);}return 0;}图论的核心应该就是建图了,这题就是这个问题
因为不能放车的地方不影响车的互相攻击,所以可以将横坐标,与纵坐标看做是两个不同集合,然后就是求将横纵一一对应的最大数量,也就是二分图的最大匹配了。。
至于关键点的确定,就是去掉后再进行匹配看最大匹配数是否减少。
- 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 棋盘游戏 二分匹配
- HDU 1281 棋盘游戏(二分匹配)
- HDU 1281 棋盘游戏-二分匹配
- hdu 1281 棋盘游戏 (二分匹配)
- HDU 1281 棋盘游戏【二分匹配】
- HDU 1281 棋盘游戏 二分匹配
- HDU 1180题 诡异的楼梯
- hadoop的stop-all无效解决
- 《失恋33天》-电视剧版
- 详细解析Java中抽象类和接口的区别
- 点击提交按钮后按钮变灰色不可用状态的三种方法
- hdu 1281 棋盘游戏 二分图匹配
- 平衡二叉树之一
- hdu 1498 50 years, 50 colors 二分图匹配
- 关于Java调用批处理命令向mysql导入数据的中文乱码有关问题
- 各种数据库分页的sql语句
- 面试题->motolola一面试题
- hdu 2444 The Accomodation of Students 二分图判断与匹配
- 单文档显示图片
- 报错java.lang.ClassCastException: XXXXXXX.Application cannot be cast to android.app.MyApplicati