Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 28659 | Accepted: 15614 |
Description
Input
Output
Sample Input
6 9 ....#. .....# ...... ...... ...... ...... ...... #@...# .#..#. 11 9 .#......... .#.#######. .#.#.....#. .#.#.###.#. .#.#..@#.#. .#.#####.#. .#.......#. .#########. ........... 11 6 ..#..#..#.. ..#..#..#.. ..#..#..### ..#..#..#@. ..#..#..#.. ..#..#..#.. 7 7 ..#.#.. ..#.#.. ###.### ...@... ###.### ..#.#.. ..#.#.. 0 0
Sample Output
45 59 6 13
Source
简单的DFS,练练手,直接代码吧。
Source Code Problem: 1979 User: lk951208 Memory: 252K Time: 0MS Language: C++ Result: Accepted Source Code #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define MAXN 300 using namespace std; char mp[MAXN][MAXN]; int N,M,ans; void dfs(int r,int c) { if(r<0 || r>=M || c<0 || c>=N) return; if(mp[r][c]=='#') return; if(mp[r][c]!='#') {ans++;mp[r][c]='#';} dfs(r+1,c); dfs(r-1,c); dfs(r,c+1); dfs(r,c-1); } int main() { while(scanf("%d%d",&N,&M) && N && M) { int x,y;ans=0; memset(mp,0,sizeof(mp)); for(int i=0;i<M;i++) { scanf("%s",mp[i]); for(int j=0;j<N;j++) if(mp[i][j]=='@') {x=i;y=j;} } dfs(x,y); printf("%d\n",ans); } return 0; }