Advertisement
Guest User

Untitled

a guest
Jun 27th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("abq.in");
  6. ofstream fout("abq.out");
  7.  
  8. int n, m, query, x, y, x2, y2, lee[205][205];
  9. char matrix[205][205];
  10. int dx[] = {1, -1, 0, 0};
  11. int dy[] = {0, 0, 1, -1};
  12.  
  13.  
  14. int main()
  15. {
  16. fin >> n >> m;
  17. for (int i = 1; i <= n; ++i)
  18. {
  19. for (int j = 1; j <= m; ++j)
  20. {
  21. fin >> matrix[i][j];
  22. }
  23. }
  24. fin >> query;
  25. while (query--)
  26. {
  27. fin >> x >> y >> x2 >> y2;
  28. if (matrix[x][y] == 'b' || matrix[x2][y2] == 'b')
  29. {
  30. fout << -1 << "\n";
  31. }
  32. else
  33. {
  34. queue <pair <int, int> > coada;
  35. coada.push({x, y});
  36. lee[x][y] = 1;
  37. while (!coada.empty())
  38. {
  39. int i = coada.front().first;
  40. int j = coada.front().second;
  41. coada.pop();
  42. for (int k = 0; k < 4; ++k)
  43. {
  44. int i2 = i + dx[k];
  45. int j2 = j + dy[k];
  46. if (i2 >= 1 && i2 <= n && j2 >= 1 && j2 <= m && lee[i2][j2] == 0 && matrix[i2][j2] == 'a')
  47. {
  48. lee[i2][j2] = lee[i][j] + 1;
  49. coada.push({i2, j2});
  50. }
  51. }
  52. }
  53. if (lee[x2][y2] == 0)
  54. {
  55. fout << -1 << "\n";
  56. }
  57. else
  58. {
  59. fout << lee[x2][y2] << "\n";
  60. }
  61. for (int i = 1; i <= n; ++i)
  62. {
  63. for (int j = 1; j <= m; ++j)
  64. {
  65. lee[i][j] = 0;
  66. }
  67. }
  68. }
  69. }
  70. fin.close();
  71. fout.close();
  72. return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement