zoukankan      html  css  js  c++  java
  • pku 2446 Chessboard

    题目:http://poj.org/problem?id=2446

    本题和hdu1507类似,具体解释:http://www.cnblogs.com/lujiacheng/archive/2011/07/25/2116247.html

    代码:

    View Code
     1 #include<stdio.h>
    2 #include<string.h>
    3 #define maxn 51
    4 int dx[]={-1,1,0,0};
    5 int dy[]={0,0,-1,1};
    6
    7 int n,m,k,ans;
    8 int a[maxn][maxn],mark[maxn*maxn];
    9 bool map[maxn*maxn][maxn*maxn],visit[maxn*maxn],hash[maxn][maxn];
    10 void get_map()
    11 {
    12 int i,j,k,x,y,cnt=1;
    13 for(i=1;i<=n;i++)
    14 for(j=1;j<=m;j++)
    15 if(!hash[i][j])
    16 {
    17 a[i][j]=cnt;
    18 cnt++;
    19 }
    20 memset(map,0,sizeof(map));
    21 for(i=1;i<=n;i++)
    22 for(j=1;j<=m;j++)
    23 if(!hash[i][j])
    24 for(k=0;k<4;k++)
    25 {
    26 x=i+dx[k];
    27 y=j+dy[k];
    28 if(x>=1&&x<=n&&y>=1&&y<=m&&!hash[x][y])
    29 {
    30 map[a[i][j]][a[x][y]]=1;
    31 map[a[x][y]][a[i][j]]=1;
    32 }
    33
    34 }
    35 }
    36
    37 bool dfs(int k)
    38 {
    39 int i,j,l;
    40 for(i=1;i<=n;i++)
    41 for(j=1;j<=m;j++)
    42 if(!hash[i][j]&&(i+j)%2==0)
    43 {
    44 l=a[i][j];
    45 if(map[k][l]&&!visit[l])
    46 {
    47 visit[l]=1;
    48 if(mark[l]==-1||dfs(mark[l]))
    49 {
    50 mark[l]=k;
    51 return 1;
    52 }
    53 }
    54 }
    55 return 0;
    56 }
    57
    58 bool solve()
    59 {
    60 int i,j,num=0;
    61 memset(mark,-1,sizeof(mark));
    62 for(i=1;i<=n;i++)
    63 for(j=1;j<=m;j++)
    64 {
    65 memset(visit,0,sizeof(visit));
    66 if(!hash[i][j]&&(i+j)%2==1&&dfs(a[i][j]))
    67 {
    68 num++;
    69 }
    70 }
    71 if(num*2==ans)
    72 return 1;
    73 return 0;
    74 }
    75
    76 int main()
    77 {
    78 int x,y;
    79 while(scanf("%d%d%d",&n,&m,&k)!=EOF)
    80 {
    81 ans=n*m-k;
    82 memset(hash,0,sizeof(hash));
    83 while(k--)
    84 {
    85 scanf("%d%d",&x,&y);
    86 hash[y][x]=1;
    87 }
    88 get_map();
    89 if(solve())
    90 printf("YES\n");
    91 else
    92 printf("NO\n");
    93 }
    94 return 0;
    95 }

      

  • 相关阅读:
    个人理解闭包
    个人理解回调
    在网站中设置一个分享到功能
    在lua中从一个字符串中移除空间源码
    成都实行积分落户
    unity3D客户端框架
    skynet对Windows环境支持的版本:Windows版skynet
    超期羁押
    资料
    媒体电话
  • 原文地址:https://www.cnblogs.com/lujiacheng/p/2117968.html
Copyright © 2011-2022 走看看