intさわだんのBlack History

刹那的レジェンドになりたい。

AOJ0569 イルミネーション

致命的なミスをして一発ACできなかったから精進。

解法:なし。

#include <cstdio>

using namespace std;

int dy[] = {-1,0,1,1,0,-1};
int dx0[] = {0,1,0,-1,-1,-1};
int dx1[] = {1,1,1,0,-1,0};
int w,h,ans = 0;
int m[110][110] = {0};
void dfs(int y,int x){

	m[y][x] = 2;
	
	for(int i = 0;i < 6;i++){
		
		int ny = y + dy[i];
		int nx;
		if(y % 2 == 0){
			nx = x + dx0[i];
		}else{
			nx = x + dx1[i];
		}
		
		if(nx >= 0 && nx <= w+1 && ny >= 0 && ny <= h+1){
		
		if(m[ny][nx] == 1){
		ans++;
		}else if(m[ny][nx] == 0){
		dfs(ny,nx);
		}
	}
	}
	
	return;
}






int main(){
	scanf("%d%d",&w,&h);
	
	for(int i = 1;i <= h;i++){
		for(int j = 1;j <= w;j++){
			scanf("%d",&m[i][j]);
		}
	}
	
	dfs(0,0);
	
	printf("%d\n",ans);
	
	return 0;
	
}