📄 2446.txt
字号:
#include <stdio.h>
#include <memory.h>
const int dx[] = { 0, 1, 0, 0, -1 };
const int dy[] = { 0, 0, 1,-1, 0 };
int n, m;
inline bool inmap( int x, int y ) {
return 0<=x&&x<n && 0<=y&&y<m;
}
int map[32][32] = { 0 };
int sign[32][32] = { 0 }, count = 0;
bool search( int x, int y ) {
int xx, yy, i, t;
sign[x][y] = count;
for( i=1; i<=4; i++ ) {
if( inmap( xx=x+dx[i], yy=y+dy[i] ) && sign[xx][yy] < count ) {
t = map[xx][yy];
sign[xx][yy] = count;
if( !t || t != -1 && search( xx+dx[t], yy+dy[t] ) ) {
map[xx][yy] = 5-i;
map[x][y] = i;
return true;
}
}
}
return false;
}
int main( ) {
int i, j, h, s[2] = {0};
scanf( "%d%d%d", &m, &n, &h );
while( h-- ) {
scanf( "%d%d", &i, &j );
map[i-1][j-1] = -1;
s[(i+j)&1]++;
}
if( s[0]-(n*m&1) == s[1] ) {
for( i=0; i<n; i++ )
for( j=0; j<m; j++ )
{
count++;
if( !map[i][j] && !search( i, j ) )
goto loop;
}
printf( "YES\n" );
return 0;
}
loop:
printf( "NO\n" );
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -