Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <queue>
- #include <algorithm>
- using namespace std;
- int main()
- {
- queue<int> q1, q2;
- int n, s, i, j, m;
- cin >> n >> m;
- //vector<vector<pair<int, int> > > p(n, vector<pair<int, int>(n));
- vector<vector<int> > v(n+2, vector<int>(m+2));
- for(i = 0; i <= n+1; i++) v[i][0] = -1;
- for(i = 0; i <= m+1; i++) v[0][i] = -1;
- for(i = 0; i <= n+1; i++) v[i][m+1] = -1;
- for(i = 0; i <= m+1; i++) v[n+1][i] = -1;
- for(i = 1; i <= n; i++)
- {
- for(j = 1; j <= m; j++)
- {
- cin >> v[i][j];
- if(v[i][j] == 2)v[i][j] = -2;
- if(v[i][j] == 1)v[i][j] = -1;
- }
- }
- q1.push(1); q2.push(1);
- while(!q1.empty())
- {
- int x = q1.front();
- int y = q2.front();
- q1.pop();
- q2.pop();
- i = y;
- j = x;
- while(v[i][j] == 0)
- {
- i--;
- }
- if(v[i][j] == -1)
- {
- i++;
- v[i][j] = v[y][x]+1;
- q1.push(j);
- q2.push(i);
- }
- if(v[i][j] == -2)
- {
- cout << v[y][x]+1;
- return 0;
- }
- //
- i = y;
- j = x;
- while(v[i][j] == 0)
- {
- i++;
- }
- if(v[i][j] == -1)
- {
- i--;
- v[i][j] = v[y][x]+1;
- q1.push(j);
- q2.push(i);
- }
- if(v[i][j] == -2)
- {
- cout << v[y][x]+1;
- return 0;
- }
- //
- i = y;
- j = x;
- while(v[i][j] == 0)
- {
- j++;
- }
- if(v[i][j] == -1)
- {
- j--;
- v[i][j] = v[y][x]+1;
- q1.push(j);
- q2.push(i);
- }
- if(v[i][j] == -2)
- {
- cout << v[y][x]+1;
- return 0;
- }
- //
- i = y;
- j = x;
- while(v[i][j] == 0)
- {
- j--;
- }
- if(v[i][j] == -1)
- {
- j++;
- v[i][j] = v[y][x]+1;
- q1.push(j);
- q2.push(i);
- }
- if(v[i][j] == -2)
- {
- cout << v[y][x]+1;
- return 0;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement