Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <queue>
- using namespace std;
- vector<vector<int>> g;
- queue<pair<int, int>> Q;
- int di[8] = { -1,-2,-2,-1,1,2,2,1 };
- int dj[8] = { -2,-1,1,2,2,1,-1,-2 };
- void bfs()
- {
- while (!Q.empty())
- {
- pair<int, int> cur = Q.front(); Q.pop();
- for (int i = 0; i < 8; i++)
- {
- int ni = cur.first + di[i]; int nj = cur.second + dj[i];
- if (ni > 0 && ni <= 8 && nj > 0 && nj <= 8)
- {
- if (g[ni][nj] > g[cur.first][cur.second] + 1)
- {
- Q.push({ ni,nj });
- g[ni][nj] = g[cur.first][cur.second] + 1;
- }
- }
- }
- }
- }
- int main()
- {
- char a, b, c, d;
- cin >> a >> b >> c >> d;
- g.resize(9, vector<int>(9, 999999));
- int x1 = a - 'a' + 1, x2 = c - 'a' + 1, y1 = b - '0', y2 = d - '0';
- Q.push({ x1, y1 });
- g[x1][y1] = 0;
- bfs();
- if (!(g[x2][y2] & 1)) cout << g[x2][y2] / 2;
- else cout << -1;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement