2011年JOI予選問5 [コンテスト]
Cユーザーはキューに嫌われています!!! (意訳:循環キューが上手く動かなかった)
dfs可愛いですよねっ.
短く書けました.これは気づくか気づかないか、ですね.
dfs可愛いですよねっ.
短く書けました.これは気づくか気づかないか、ですね.
#include <stdio.h> #include <string.h> int x, y; const int dx[2][6] = {{-1, -1, -1, 0, 1, 0}, {0, -1, 0, 1, 1, 1}}; const int dy[2][6] = {{-1, 0, 1, -1, 0, 1}, {-1, 0, 1, -1, 0, 1}}; void paint(int ty, int tx, int map[102][102]){ int my, mx; int i, j; map[ty][tx] = 2; for (i = 0; i < 6; i++){ mx = tx + dx[ty % 2][i]; my = ty + dy[ty % 2][i]; if (0 <= mx && mx <= x + 1 && 0 <= my && my <= y + 1 && map[my][mx] == 0){ paint(my, mx, map); } } } int main(void) { int map[102][102]; int mx, my; int i, j, k; int ans; scanf("%d%d", &x, &y); memset(map, 0, sizeof(map)); for (i = 1; i <= y; i++){ for (j = 1; j <= x; j++){ scanf("%d", &map[i][j]); } } paint(0, 0, map); ans = 0; for (i = 1; i <= y; i++){ for (j = 1; j <= x; j++){ if (map[i][j] == 1){ for (k = 0; k < 6; k++){ if (map[i + dy[i % 2][k]][j + dx[i % 2][k]] == 2){ ans++; } } } } } printf("%d\n", ans); return (0); }
2012-01-25 21:45
nice!(0)
コメント(0)
トラックバック(0)
コメント 0