设为首页 加入收藏

TOP

poj--2706--Connect(极限大模拟)(二)
2015-07-20 17:21:51 来源: 作者: 【 】 浏览:6
Tags:poj--2706--Connect 极限 模拟
&& c[ (u-1)*n+v ][ u*n+(v-2) ] != 0 ) return ; if( (v-2) >= 0 && (u-2) >= 0 && (v-1) >= 0 && c[ u*n+(v-2) ][ (u-2)*n+(v-1) ] != 0 ) return ; c[ u*n+v ][ (u-1)*n+(v-2) ] = c[ (u-1)*n+(v-2) ][ u*n+v ] = temp ; return ; } void solve3(int u,int v,int n,int temp) { if( (u+1) < n ) { if( (u-1) >= 0 && (v-1) >= 0 && c[ (u+1)*n+v ][ (u-1)*n+(v-1) ] != 0 ) return ; if( (v-2) >= 0 && c[ (u+1)*n+v ][ u*n+(v-2) ] != 0 ) return ; if( (u+2) < n && (v-2) >= 0 && c[ (u+1)*n+v ][ (u+2)*n+(v-2) ] != 0 ) return ; } if( (u+1) < n && (v-1) >= 0 ) { if( (v+1) < n && c[ (u+1)*n+(v-1) ][ u*n+(v+1) ] != 0 ) return ; if( (u+2) < n && (v+1) < n && c[ (u+1)*n+(v-1) ][ (u+2)*n+(v+1) ] != 0 ) return ; if( (u+3) < n && c[ (u+1)*n+(v-1) ][ (u+3)*n+v ] != 0 ) return ; } if( (u+1) < n && (v+1) < n && (v-1) >= 0 && c[ (u+1)*n+(v+1) ][ u*n+(v-1) ] != 0 ) return ; if( (v-1) >= 0 && (u+2) < n && c[ u*n+(v-1) ][ (u+2)*n+v ] != 0 ) return ; if( (u+2) < n && (u+1) < n && (v-2) >= 0 && c[ (u+2)*n+v ][ (u+1)*n+(v-2) ] != 0 ) return ; c[ u*n+v ][ (u+2)*n+(v-1) ] = c[ (u+2)*n+(v-1) ][ u*n+v ] = temp ; return ; } void solve4(int u,int v,int n,int temp) { if( (u-1) >= 0 ) { if( (u-2) >= 0 && (v-2) >= 0 && c[ (u-1)*n+v ][ (u-2)*n+(v-2) ] != 0 ) return ; if( (v-2) >= 0 && c[ (u-1)*n+v ][ u*n+(v-2) ] != 0 ) return ; if( (u+1) < n && (v-1) >= 0 && c[ (u-1)*n+v ][ (u+1)*n+(v-1) ] != 0 ) return ; } if( (u-1) >= 0 && (v-1) >= 0 ) { if( (u-3) >= 0 && c[ (u-1)*n+(v-1) ][ (v-3)*n+v ] != 0 ) return ; if( (u-2) >= 0 && (v+1) < n && c[ (u-1)*n+(v-1) ][ (u-2)*n+(v+1) ] != 0 ) return ; if( (v+1) < n && c[ (u-1)*n+(v-1) ][ u*n+(v+1) ] != 0 ) return ; } if( (u-1) >= 0 && (v+1) < n && (v-1) >= 0 && c[ (u-1)*n+(v+1) ][ u*n+(v-1) ] != 0 ) return ; if( (v-1) >= 0 && (u-2) >= 0 && c[ u*n+(v-1) ][ (u-2)*n+v ] != 0 ) return ; if( (u-2) >= 0 && (v-2) >= 0 && c[ (u-2)*n+v ][ (u-1)*n+(v-2) ] != 0 ) return ; c[ u*n+v ][ (u-2)*n+(v-1) ] = c[ (u-2)*n+(v-1) ][ u*n+v ] = temp ; return ; } int bfs(int u,int n) { int v , i , j ; while( !que.empty() ) que.pop() ; vis[u] = 1 ; que.push(u) ; while( !que.empty() ) { u = que.front() ; que.pop() ; if( u >= (n-1)*n ) return 1 ; for(i = 0 ; i < n*n ; i++) { if( c[u][i] == 1 && vis[i] == 0 ) { vis[i] = 1 ; que.push(i) ; } } } return 0 ; } void solve(int temp,int n) { int u , v ; scanf("%d %d", &u, &v) ; Map[u][v] = temp ; if( (u+1) < n && (v-2) >= 0 && Map[u][v] == Map[u+1][v-2] ) solve1(u,v,n,temp); if( (u-1) >= 0 && (v+2) < n && Map[u][v] == Map[u-1][v+2] ) solve1(u-1,v+2,n,temp) ; if( (u-1) >= 0 && (v-2) >= 0 && Map[u][v] == Map[u-1][v-2] ) solve2(u,v,n,temp) ; if( (u+1) < n && (v+2) < n && Map[u][v] == Map[u+1][v+2] ) solve2(u+1,v+2,n,temp) ; if( (u+2) < n && (v-1) >= 0 && Map[u][v] == Map[u+2][v-1] ) solve3(u,v,n,temp) ; if( (u-2) >= 0 && (v+1) < n && Map[u][v] == Map[u-2][v+1] ) solve3(u-2,v+1,n,temp) ; if( (u-2) >= 0 && (v-1) >= 0 && Map[u][v] == Map[u-2][v-1] ) solve4(u,v,n,temp) ; if( (u+2) < n && (v+1) < n && Map[u][v] == Map[u+2][v+1] ) solve4(u+2,v+1,n,temp) ; } int main() { int n , m , x , y , u , v , temp , i , j ; while( scanf("%d %d", &n, &m) != EOF ) { if( m == 0 && n == 0 ) break ; n++ ; memset(Map,0,sizeof(vis)) ; memset(c,0,sizeof(c)) ; temp = 1 ; m-- ; while( m-- ) { solve(temp,n) ; temp = -temp ; } int k1 = 0 , k2 = 0 ; memset(vis,0,sizeof(vis)) ; for(j = 0 ; j < n ; j++) { if( Map[0][j] == 1 && vis[j] == 0 ) { k1 = bfs(j,n) ; if( k1 == 1 ) break ; } } solve(temp,n) ; memset(vis,0,sizeof(vis)) ; for(j = 0 ; j < n ; j++) { if( Map[0][j] == 1 && vis[j] == 0 ) { k2 = bfs(j,n) ; if( k2 == 1 ) break ; } } if( k1 == 0 && k2 == 1) printf("yes\n") ; else printf("no\n") ; } return 0; }
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇pojPOJ 2411--Mondriaan39;s Drea.. 下一篇Remove Duplicates from Sorted L..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C 内存管理 | 菜鸟教 (2025-12-26 20:20:37)
·如何在 C 语言函数中 (2025-12-26 20:20:34)
·国际音标 [ç] (2025-12-26 20:20:31)
·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)