AOJ0569 Illumination
AOJ0569
AIZU ONLINE JUDGE
適当にdfsするとできた
前の予選の時は全然出来なかったなあ。
#include <cstdio> using namespace std; int w, h, ans; int bu[110][110]; bool used[110][110]; int dx[2][6] = {{-1,-1,0,1,0,-1}, {-1, 0, 1, 1, 1, 0}}; int dy[6] = {0,-1,-1,0,1,1}; bool in(int nx, int ny){ return 0 <= nx && nx <= w + 1 && 0 <= ny && ny <= h + 1 && !used[nx][ny]; } void solve(int x, int y){ used[x][y] = true; for(int i = 0; i < 6; i++){ int nx = x + dx[y & 1][i]; int ny = y + dy[i]; if(in(nx,ny)){ if(bu[nx][ny] == 1) ans++; else solve(nx, ny); } } } int main(){ scanf("%d %d", &w, &h); for(int i = 1; i <= h; i++) for(int j = 1; j <= w; j++) scanf("%d", &bu[j][i]); solve(0,0); printf("%d\n", ans); return 0; }