hdu 1281 棋盘游戏
来源:互联网 发布:奥菲斯办公软件下载 编辑:程序博客网 时间:2024/06/05 19:28
将行和列的标号组成X和Y集合,然后如果x,y坐标可以放车,就在x和y点之间连一条线,不同行和列车就不会相互攻击,所以求出最大匹配就是所得的最多可放车额个数然后枚举每个点,判断其是否为重要点
#include<iostream>#include<stdio.h>#include<string.h>using namespace std;#define N 102int map[N][N],visit[N],match[N];int n,m,k;struct node{ int x,y;}rc[N*N];bool DFS(int k){ for(int i=1;i<=m;i++){ if(visit[i]||!map[k][i]) continue; visit[i]=1; if(!match[i]||DFS(match[i])){ match[i]=k; return true; } } return false;}int Match(){ memset(match,0,sizeof(match)); int cnt=0; for(int i=1;i<=n;i++){ memset(visit,0,sizeof(visit)); if(DFS(i)) cnt++; } return cnt;}int main(){ int i,t=1; while(scanf("%d%d%d",&n,&m,&k)!=EOF){ memset(map,0,sizeof(map)); for(i=1;i<=k;i++){ scanf("%d%d",&rc[i].x,&rc[i].y); map[rc[i].x][rc[i].y]=1; } int num=0,ans; ans=Match(); for(i=1;i<=k;i++){ map[rc[i].x][rc[i].y]=0; if(ans>Match()) num++; map[rc[i].x][rc[i].y]=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 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 棋盘游戏
- Lua5.3 注册表 _G _ENV
- linux命令学习
- s:iterator的用法
- OC学习--文件操作
- Lucene源码解析--IndexWriterConfig配置参数说明
- hdu 1281 棋盘游戏
- 婴幼儿乳制品和钙的摄入建议--澳洲相关育儿经验分享
- Linux下Tomcat的启动、关闭、杀死进程
- 7-6
- [leetcode] Decode Ways
- [算法]java实现 二分查找 斐波那契数列 静静思考
- Spring Jdbc
- 进程管理(四)
- linux下导入、导出mysql数据库命令