floodfill
#include<iostream>
using namespace std;
int N;
int map[35][35];
const int d[4][2]={0,-1,-1,0,0,1,1,0};
long long ans;
void fill(int x,int y){
map[x][y]=-1;
for(int i=0;i<4;++i)
if(map[x+d[i][0]][y+d[i][1]]>0)
fill(x+d[i][0],y+d[i][1]);
else if(map[x+d[i][0]][y+d[i][1]]==0) ans++;
}
int main()
{
scanf("%d",&N); getchar();
memset(map,0,sizeof(map));
char ch;
for(int i=1;i<=N;++i){
for(int j=1;j<=N;++j){
ch=getchar();
if(ch=='.') map[i][j]=1;
}
getchar();
}
ans=0;
map[0][1]=map[1][0]=map[N][N+1]=map[N+1][N]=-1;
fill(1,1);
if(map[N][N]!=-1) fill(N,N);
printf("%lld\n",ans*9);
return 0;
}
posted on 2009-05-29 15:12
xfstart07 阅读(262)
评论(0) 编辑 收藏 引用 所属分类:
代码库