Advertisement
Guest User

GUCCI

a guest
Aug 18th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ld long double
  3. #define F first
  4. #define S second
  5. #define pb push_back
  6. #define pii pair <int, int>
  7. #define all(x) (x).begin(), (x).end()
  8. #define rall(x) (x).rbegin(), (x).rend()
  9. #define reunique(x) (x).resize(std::unique(all(x)) - (x).begin())
  10. #define int long long
  11. using namespace std;
  12.  
  13. int n, x1, y1, x2, y2;
  14. int dx[] = {2, 2, -2, -2, 1, 1, -1, -1};
  15. int dy[] = {-1, 1, -1, 1, -2, 2, -2, 2};
  16. int vis[30][30], d[30][30];
  17. signed main(){
  18. memset(d, -1, sizeof d);
  19. cin >> n;
  20. cin >> x1 >> y1 >> x2 >> y2;
  21. queue <pair <int, int>> q;
  22. q.push({x1, y1});
  23. vis[x1][y1] = 1;
  24. d[x1][y1] = 0;
  25. while (!q.empty()){
  26. pair <int, int> cur = q.front();
  27. q.pop();
  28. for (int i = 0; i < 8; i++){
  29. if (cur.first + dx[i] >= 1 && cur.first + dx[i] <= n && cur.second + dy[i] >= 1 && cur.second + dy[i] <= n){
  30. if (!vis[cur.first + dx[i]][cur.second + dy[i]]){
  31. vis[cur.first + dx[i]][cur.second + dy[i]] = 1;
  32. d[cur.first + dx[i]][cur.second + dy[i]] = d[cur.first][cur.second] + 1;
  33. q.push(make_pair(cur.first + dx[i], cur.second + dy[i]));
  34. }
  35. }
  36. }
  37. }
  38. cout << d[x2][y2] << '\n';
  39. int cur = d[x2][y2];
  40. vector <pair <int, int>> v;
  41. while (d[x2][y2] != 0){
  42. v.push_back({x2, y2});
  43. for (int i = 0; i < 8; i++){
  44. if (x2 - dx[i] >= 1 && x2 - dx[i] <= n && y2 - dy[i] >= 1 && y2 - dy[i] <= n){
  45. if (vis[x2 - dx[i]][y2 - dy[i]] && d[x2 - dx[i]][y2 - dy[i]] == cur - 1){
  46. x2 -= dx[i];
  47. y2 -= dy[i];
  48. cur--;
  49. break;
  50. }
  51. }
  52. }
  53. }
  54. v.push_back({x1, y1});
  55. for (int i = v.size() - 1; i >= 0; i--){
  56. cout << v[i].first << ' ' << v[i].second << '\n';
  57. }
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement