Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("abq.in");
- ofstream fout("abq.out");
- int n, m, query, x, y, x2, y2, lee[205][205];
- char matrix[205][205];
- int dx[] = {1, -1, 0, 0};
- int dy[] = {0, 0, 1, -1};
- int main()
- {
- fin >> n >> m;
- for (int i = 1; i <= n; ++i)
- {
- for (int j = 1; j <= m; ++j)
- {
- fin >> matrix[i][j];
- }
- }
- fin >> query;
- while (query--)
- {
- fin >> x >> y >> x2 >> y2;
- if (matrix[x][y] == 'b' || matrix[x2][y2] == 'b')
- {
- fout << -1 << "\n";
- }
- else
- {
- queue <pair <int, int> > coada;
- coada.push({x, y});
- lee[x][y] = 1;
- while (!coada.empty())
- {
- int i = coada.front().first;
- int j = coada.front().second;
- coada.pop();
- for (int k = 0; k < 4; ++k)
- {
- int i2 = i + dx[k];
- int j2 = j + dy[k];
- if (i2 >= 1 && i2 <= n && j2 >= 1 && j2 <= m && lee[i2][j2] == 0 && matrix[i2][j2] == 'a')
- {
- lee[i2][j2] = lee[i][j] + 1;
- coada.push({i2, j2});
- }
- }
- }
- if (lee[x2][y2] == 0)
- {
- fout << -1 << "\n";
- }
- else
- {
- fout << lee[x2][y2] << "\n";
- }
- for (int i = 1; i <= n; ++i)
- {
- for (int j = 1; j <= m; ++j)
- {
- lee[i][j] = 0;
- }
- }
- }
- }
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement