标签:des style http color os strong io for
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 13176 | Accepted: 4118 |
Description
Input
Output
Sample Input
4 3 2 2 1 3 3
Sample Output
YES
Hint
#include"stdio.h" #include"string.h" #include"queue" using namespace std; #define N 35 #define M 1200 int g[N][N],n,m; int dir[4][2]={0,1,0,-1,-1,0,1,0}; int mark[M],link[M]; int judge(int x,int y) { if(x>=0&&x<n&&y>=0&&y<m) return 1; return 0; } int find(int k) { int i,j,x,y,di,dj; x=k/m; y=k%m; for(i=0;i<4;i++) { di=dir[i][0]+x; dj=dir[i][1]+y; if(judge(di,dj)&&!g[di][dj]) { j=di*m+dj; if(!mark[j]) { mark[j]=1; if(link[j]==-1||find(link[j])) { link[j]=k; return 1; } } } } return 0; } int main() { int u,v,k,i,j; while(scanf("%d%d%d",&n,&m,&k)!=-1) { memset(g,0,sizeof(g)); for(i=0;i<k;i++) { scanf("%d%d",&v,&u); u--;v--; g[u][v]=1; } if((n*m-k)&1) { printf("NO\n"); continue; } int ans=0; memset(link,-1,sizeof(link)); for(i=0;i<n;i++) { for(j=0;j<m;j++) { if((i+j)%2==0||g[i][j]) //(i+j)奇偶性!!! continue; memset(mark,0,sizeof(mark)); ans+=find(i*m+j); } } //printf("%d\n",ans); if(ans*2==n*m-k) printf("YES\n"); else printf("NO\n"); } return 0; }
poj 2446 Chessboard (二分图利用奇偶性匹配),布布扣,bubuko.com
poj 2446 Chessboard (二分图利用奇偶性匹配)
标签:des style http color os strong io for
原文地址:http://blog.csdn.net/u011721440/article/details/38323657