fork download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. int n,m;
  5. char Board[102][102];
  6. int color[102][102];
  7. bool visited[102][102];
  8. int di[]={-1,0,1,0};
  9. int dj[]={0,1,0,-1};
  10. bool curr_color=0;
  11. void dfs(int i,int j)
  12. {
  13. if( Board[i][j]=='.')
  14. {
  15. color[i][j]=curr_color;
  16. curr_color=!curr_color;
  17. visited[i][j]=1;
  18. }
  19. int new_color=curr_color;
  20. for(int k=0;k<4;k++)
  21. {
  22. int new_i,new_j;
  23. new_i = i+di[k]; new_j=j+dj[k];
  24. if(visited[new_i][new_j]==0 && Board[new_i][new_j]=='.')
  25. {
  26.  
  27. color[new_i][new_j]=new_color;
  28. dfs(new_i,new_j);
  29. }
  30. }
  31.  
  32. }
  33. int main() {
  34. cin>>n>>m;
  35. //input
  36. for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>Board[i][j];
  37. memset(color,-1,sizeof color);
  38. memset(visited,0,sizeof visited);
  39. for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(!visited[i][j]){dfs(i,j);}
  40.  
  41. for(int i=1;i<=n;i++){
  42. for(int j=1;j<=m;j++){ if(color[i][j]==1) cout<<'W';else if(color[i][j]==0)cout<<'B'; else cout<<'-';}
  43. cout<<endl;
  44. }
  45. return 0;
  46. }
Success #stdin #stdout 0s 3160KB
stdin
3 3
.-.
---
--.
stdout
B-W
---
--B