poj 1979 Red and Black ---DFS
#include <iostream>#include <cstdio>#include <fstream>using namespace std;const int maxn=25;char maze[maxn][maxn];int ans,N,M,sx,sy;int dir[4][2]={-1,0,1,0,0,-1,0,1};void dfs(int x,int y){for(int i=0;i<4;i++){int nx=x+dir[i][0],ny=y+dir[i][1];if(nx<0 || nx>=N || ny<0|| ny>=M)continue;if(maze[nx][ny]=='#' || maze[nx][ny]=='@') continue;ans++;maze[nx][ny]='#';dfs(nx,ny);}}int main(){//ifstream fin;//fin.open("input.txt");while(cin>>M>>N){if(N+M==0)break;for(int i=0;i<N;i++)for(int j=0;j<M;j++){cin>>maze[i][j];if(maze[i][j]=='@'){sx=i;sy=j;}}ans=0;dfs(sx,sy);cout<<ans+1<<endl;}return 0;}