Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vector>
- #include <algorithm>
- #include <fstream>
- #include<string>
- #include <iostream>
- using namespace std;
- vector<vector<char> > x(1001, vector<char>(1001));
- vector<vector<int> > y(0, vector<int>(2)), rang(1001, vector<int >(1001, -1));
- vector<int> q(2);
- ifstream in("rook.in"); ofstream out("rook.out");
- int main() {
- vector<vector<int> > t(501, vector<int>(501, 0));
- int n, m;
- in >> n >> m;
- string s;
- vector<int> start(2), endd(2);
- getline(in, s);
- for (int i = n - 1; i >= 0; --i) {
- for (int j = 0; j<m; j++) {
- in >> x[i][j];
- if (x[i][j] == 'S') { start[0] = i; start[1] = j; }
- if (x[i][j] == 'F') { endd[0] = i; endd[1] = j; }
- }
- }
- int k = 0;
- vector<int> q(2);
- y.push_back(start);
- rang[start[0]][start[1]] = 0;
- while (k<y.size() ) {
- if (t[y[k][0]][y[k][1]] == 0) {
- t[y[k][0]][y[k][1]] = 1;
- int i;
- int j;
- //cout<<k<<' '<<y[k][0]<<' '<<y[k][1]<<' '<<rang[y[k][0]][y[k][1]]<<endl;
- for (i = y[k][0] + 1; i<n && (x[i][y[k][1]] != 'P'); i++) {
- if (rang[i][y[k][1]] == -1) {
- q[0] = i;
- q[1] = y[k][1];
- y.push_back(q);
- rang[i][y[k][1]] = rang[y[k][0]][y[k][1]] + 1;
- }
- }
- for (i = y[k][0] - 1; i >= 0 && (x[i][y[k][1]] != 'P'); --i) {
- if (rang[i][y[k][1]] == -1) {
- q[0] = i;
- q[1] = y[k][1];
- y.push_back(q);
- rang[i][y[k][1]] = rang[y[k][0]][y[k][1]] + 1;
- }
- }
- for (j = y[k][1] - 1; j >= 0 && (x[y[k][0]][j] != 'P'); --j) {
- if (rang[y[k][0]][j] == -1) {
- q[1] = j;
- q[0] = y[k][0];
- y.push_back(q);
- rang[y[k][0]][j] = rang[y[k][0]][y[k][1]] + 1;
- }
- }
- for (j = y[k][1] + 1; j<m && (x[y[k][0]][j] != 'P'); j++) {
- if (rang[y[k][0]][j] == -1) {
- q[1] = j;
- q[0] = y[k][0];
- y.push_back(q);
- rang[y[k][0]][j] = rang[y[k][0]][y[k][1]] + 1;
- }
- }
- }
- k++;
- }
- out << rang[endd[0]][endd[1]];
- cin >> k;
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement