poj 2446 (二分匹配)
来源:互联网 发布:乐视电视软件 编辑:程序博客网 时间:2024/06/13 21:57
题意;除了所给的一些点外,问能不能用1*2的矩形覆盖所有的点,矩形间不能重叠。
思路:简单二分匹配,,,,,,,
#include<stdio.h>#include<string.h>const int N=1200;int match[N],link[N],map[35][35],n,m;int dir[4][2]={0,1,0,-1,1,0,-1,0};int find(int u){int i,v,x,y,X,Y;x=u/m;y=u%m;for(i=0;i<4;i++){X=x+dir[i][0];Y=y+dir[i][1];if(X<0||X>=n||Y<0||Y>=m||map[X][Y]==1)continue;v=X*m+Y;if(link[v]==0){link[v]=1;if(match[v]==-1||find(match[v])==1){match[v]=u;return 1;}}}return 0;}int main(){int i,k,x,y,sum,j;while(scanf("%d%d%d",&n,&m,&k)!=-1){if((m * n - k) & 1){printf("NO\n");continue;}memset(map,0,sizeof(map));for(i=0;i<k;i++){scanf("%d%d",&x,&y);x--;y--;map[y][x]=1;}memset(match,-1,sizeof(match));sum=0;for(i=0;i<n;i++){for(j=0;j<m;j++){if((i+j)%2==1||map[i][j])continue;memset(link,0,sizeof(link));sum+=find(i*m+j);}}if(sum*2+k==n*m)printf("YES\n");else printf("NO\n");}return 0;}
- poj 2446 二分匹配
- poj 2446 (二分匹配)
- POJ 2446 二分最大匹配
- poj 2446(二分匹配) Chessboard
- poj 2446 (二分图匹配)
- POJ 2446 二分图匹配
- Poj-2446 Chessboard 二分匹配
- 【POJ】2446 Chessboard 二分匹配
- poj 2446 Chessboard (最大二分匹配)
- POJ 2446 Chessboard (二分匹配)
- POJ 2446 Chessboard (二分图匹配)
- POJ-2446 邻接表+二分图匹配
- POJ 2446 Chessboard(二分图匹配)
- poj 2446 二分图 最大匹配
- POJ 2446 Chessboard(二分图最大匹配)
- Chessboard - POJ 2446 二分图匹配
- POJ 2446 Chessboard(二分图匹配)
- poj 2446 二分图匹配,匈牙利算法
- HTML常用标签
- kprobes tutorial
- Aborting: unable to connect to nodeIp, smpd version mismatch
- jquery-拖动层(五)
- ubuntu 11.10 安装systemtap
- poj 2446 (二分匹配)
- could not be opened. Could not read archive
- linux TOP命令详解
- web前端开发七武器
- 笨木头的跑跑笔记四 实现地图的随精灵卷动功能
- Kdb on ubuntu 12.10
- 深入分析 Java I/O 的工作机制
- Compile Linux Kernel on Ubuntu 12.10
- 笨木头的跑跑跑笔记五 让精灵上下走? 实现touch消息的捕获