Advertisement
MarioYC

Selectivo 3 - P3

Sep 10th, 2012
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.33 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. int R,C;
  7. char M[100][101];
  8. int visited[100][101];
  9. int dr[] = {-1,-1,0,0,1,1};
  10. int dc[] = {0,1,-1,1,-1,0};
  11.  
  12. void dfs(int r, int c, int flag){
  13.     if(visited[r][c] & (1 << flag)) return;
  14.     visited[r][c] |= (1 << flag);
  15.    
  16.     for(int k = 0;k < 6;++k){
  17.         int r2 = r + dr[k];
  18.         int c2 = c + dc[k];
  19.        
  20.         if(r2 >= 0 && r2 < R && c2 >= 0 && c2 < C && M[r2][c2] != '.')
  21.             dfs(r2,c2,flag ^ 1);
  22.     }
  23. }
  24.  
  25. int main(){
  26.     while(true){
  27.         scanf("%d %d",&R,&C);
  28.         if(R == 0) break;
  29.        
  30.         for(int i = 0;i < R;++i)
  31.             scanf("%s",M[i]);
  32.        
  33.         memset(visited,0,sizeof visited);
  34.        
  35.         for(int i = 0;i < R;++i)
  36.             for(int j = 0;j < C;++j)
  37.                 if(M[i][j] == 'I')
  38.                     dfs(i,j,0);
  39.        
  40.         putchar('\n');
  41.        
  42.         for(int i = 0;i < R;++i){
  43.             for(int j = 0;j < C;++j){
  44.                 if(M[i][j] == '.') putchar('.');
  45.                 else if(visited[i][j] == 0) putchar('F');
  46.                 else if(visited[i][j] == 1) putchar('(');
  47.                 else if(visited[i][j] == 2) putchar(')');
  48.                 else putchar('B');
  49.             }
  50.            
  51.             putchar('\n');
  52.         }
  53.     }
  54.    
  55.     return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement