题目1216红与黑题目描述有一间长方形的房子地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上只能向相邻的黑色瓷砖移动。请写一个程序计算你总共能够到达多少块黑色的瓷砖。输入包括多组数据。每组数据的第一行是两个整数W和H分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中每行包括W个字符。每个字符表示一块瓷砖的颜色规则如下:1‘.’黑色的瓷砖2‘#’红色的瓷砖3‘’黑色的瓷砖并且你站在这块瓷砖上。该字符在每组数据中唯一出现一次。当在一行中读入的是两个零时表示输入结束。输出对每组数据分别输出一行显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。时空限制1s / 64MB样例输入6 9 ....#. .....# ...... ...... ...... ...... ...... #...# .#..#. 0 0样例输出45注意点不要回溯会超时本题计算的是连通块大小。代码#includebits/stdc.husingnamespacestd;constintN2010;intm,n,sx,sy,dx[6]{-1,1,0,0},dy[6]{0,0,-1,1},ans;boolvis[N][N];charg[N][N];voiddfs(intx,inty){for(inti0;i4;i){intxxxdx[i],yyydy[i];if(xx0xxnyy0yym!vis[xx][yy]g[xx][yy].){vis[xx][yy]true;ans;dfs(xx,yy);}}}intmain(){while(cinmn,m||n){for(inti0;in;i)for(intj0;jm;j){cing[i][j];if(g[i][j])sxi,syj;}memset(vis,false,sizeofvis);vis[sx][sy]true;ans1;dfs(sx,sy);coutansendl;}return0;}结果