Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <bitset>
  4. #include <queue>
  5. #define MAX 505
  6. #define NS 0101
  7. #define EV 1010
  8. using namespace std;
  9.  
  10. ifstream fin("pereti.in");
  11. ofstream fout("pereti.out");
  12.  
  13. bitset<32> v[5]= {7, 11, 13, 14};
  14. string x[4]= {"N","E","S","V"};
  15. int n, m;
  16.  
  17. int di[5]= {-1, 0, +1, 0};
  18. int dj[5]= {0, +1,0, -1};
  19. queue<pair<int, int> > q;
  20. int a[MAX][MAX];
  21. int aux[MAX][MAX];
  22.  
  23. void gard()
  24. {
  25.     int i, j;
  26.     for (j = 1; j <= m; j++)
  27.     {
  28.         if ((a[1][j] & 8) != 0)
  29.         {
  30.             a[0][j] = 2;
  31.         }
  32.     }
  33.     for (j = 1; j <= m; j++)
  34.     {
  35.         if ((a[n][j] & 2) != 0)
  36.         {
  37.             a[n + 1][j] = 8;
  38.         }
  39.     }
  40.     for (i = 1; i <= n; i++)
  41.     {
  42.         if ((a[i][1] & 1) != 0)
  43.         {
  44.             a[i][0] = 4;
  45.         }
  46.     }
  47.     for (i = 1; i <= n; i++)
  48.     {
  49.         if ((a[i][m] & 4) != 0)
  50.         {
  51.             a[i][m + 1] = 1;
  52.         }
  53.     }
  54. }
  55.  
  56. bool posibil(int i, int j)
  57. {
  58.     if((i>0 && i<n) && (j>0 && j<m))
  59.     {
  60.         return true;
  61.     }
  62.     return false;
  63. }
  64.  
  65. void FILL(int starti, int startj)
  66. {
  67.     int nexti,nextj,cate=0;
  68.     q.push({starti,startj});
  69.     while(!q.empty())
  70.     {
  71.         int i=q.front().first;
  72.         int j=q.front().second;
  73.         q.pop();
  74.         for(int k=0; k<4; k++)
  75.         {
  76.             nexti=i+di[k];
  77.             nextj=j+dj[k];
  78.             if(posibil(nexti,nextj)==true && aux[nexti][nextj]==0 && (!(a[nexti][nextj] & NS) || !(a[nexti][nextj] & EV)))
  79.             {
  80.                 aux[nexti][nextj]+=1;
  81.                 q.push({nexti,nextj});
  82.                 ///cate+=1;
  83.             }
  84.         }
  85.         q.pop();
  86.     }
  87. }
  88.  
  89. void algoritm()
  90. {
  91.     fin>>n>>m;
  92.     for(int i=1; i<=n; i++)
  93.     {
  94.         for(int j=1; j<=m; j++)
  95.         {
  96.             fin>>a[i][j];
  97.         }
  98.     }
  99.     ///fin.close();
  100.     gard();
  101.     for(int i=0; i<=n+1; i++)
  102.     {
  103.         for(int j=0; j<=m+1; j++)
  104.         {
  105.             fout<<a[i][j]<<" ";
  106.         }
  107.         fout<<endl;
  108.     }
  109.     fout.close();
  110. }
  111.  
  112. int main()
  113. {
  114.     algoritm();
  115.     return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement