PARIGAME - VOI 2011 Trò chơi chẵn lẻ

Tác giả: hieult

Ngôn ngữ: C++

#include <cstdio>
//#include <conio.h>

int a[501][501],d[501][501],n;
bool f1[501][501],f2[501][501],F[501][501];

int main()
{
    //freopen("PARIGAME.in","r",stdin);
    int test;
    scanf("%d",&test);
    for(int ii = 1;ii<=test;ii++)
    {
         scanf("%d",&n);
         for(int i = 1;i<=n;i++)
             d[0][i] = 0;
         for(int i = 1;i<=n;i++)
         {
             int k = 0;
             for(int j = 1;j<=n;j++)
             {
                 scanf("%d",&a[i][j]);
                 a[i][j] = a[i][j]%2;
                 d[i][j] = (d[i-1][j] + a[i][j])%2;
                 k = (k+a[i][j])%2;
                 if(d[i][j]== 0) f1[i][j] = true;
                 else f1[i][j] = false;
                 if(k == 0) f2[i][j] = true;
                 else f2[i][j] = false;
             }
         }
         for(int i = 0;i<=n;i++)
         {
              F[i][0] = false;
              F[0][i] = false;
         }
         for(int i = 1;i<=n;i++)
             for(int j = 1;j<=n;j++)
             {
                 F[i][j] = false;
                 if(f1[i][j] && !F[i][j-1]) F[i][j] = true;
                 if(f2[i][j] && !F[i-1][j]) F[i][j] = true;
                // printf("%d %d %d\n",i,j,F[i][j]);
             }
         if(F[n][n]) printf("YES\n");
         else printf("NO\n");
                          
    }
    //getch();
}

Download