设为首页 加入收藏

TOP

hdu 5254(暴力)
2015-11-21 01:00:40 来源: 作者: 【 】 浏览:2
Tags:hdu 5254 暴力

题解:暴力所有点,直到不存在可以0变1的点。

#include 
   
     #include 
    
      const int N = 505; int n, m, k, g[N][N], temp[N][N], vis[N][N]; bool judge(int x, int y) { if (x - 1 >= 0 && y - 1 >= 0) { if (temp[x - 1][y] && temp[x][y - 1]) return true; } if (x - 1 >= 0 && y + 1 < m) { if (temp[x - 1][y] && temp[x][y + 1]) return true; } if (x + 1 < n && y - 1 >= 0) { if (temp[x + 1][y] && temp[x][y - 1]) return true; } if (x + 1 < n && y + 1 < m) { if (temp[x + 1][y] && temp[x][y + 1]) return true; } return false; } int main() { int t, cas = 1; scanf("%d", &t); while (t--) { memset(g, 0, sizeof(g)); memset(vis, 0, sizeof(vis)); scanf("%d%d%d", &n, &m, &k); int num = 0, x, y; for (int i = 0; i < k; i++) { scanf("%d%d", &x, &y); if (!g[x - 1][y - 1]) { g[x - 1][y - 1] = 1; num++; } } int res = 0; while (1) { int flag = 0; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) temp[i][j] = g[i][j]; for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) { if (temp[i][j] == 0 && judge(i, j)) { g[i][j] = 1; flag++; } } if (flag) res += flag; else break; } printf("Case #%d:\n%d\n", cas++, res + num); } return 0; }
    
   
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Codeforces Round #254 (Div. 2) .. 下一篇[数据结构]用C++编写队列及基本操..

评论

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