Advertisement
TAHMID37

Knight moves -Tahmid37

Nov 29th, 2021
535
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.40 KB | None | 0 0
  1. /*  TAHMID RAHMAN
  2.     DAMIAN FOREVER
  3.      MATH LOVER
  4.     NEVER GIVE UP
  5. */
  6. #include<bits/stdc++.h>
  7. using namespace std;
  8. #define pi acos(-1.0)
  9. #define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
  10. #define ll long long
  11. #define pb push_back
  12. #define fi first
  13. #define se second
  14. #define in insert
  15. #define mp make_pair
  16. #define GCD(a,b) __gcd(a,b);
  17. #define endl "\n"
  18. #define FRU freopen("out.txt","w",stdout)
  19. #define FRO freopen("in.txt","r",stdin)
  20. #define INFLL 9223372036854775807
  21. #define all(x) (x).begin(),(x).end()
  22. #define MAXN   100001
  23. #define ar array
  24. #define lb lower_bound
  25. #define ub upper_bound
  26. #define minpq priority_queue<ll, vector<ll>, greater<ll>>
  27. #define maxpq priority_queue<ll>
  28. const int mxN=2e5;
  29. const int MOD=1e9+7;
  30. template<typename ForwardIterator, typename T>
  31. ForwardIterator first_less_than (ForwardIterator first, ForwardIterator last, T value)
  32. {auto it = std::lower_bound (first, last, value);
  33. return (it == first ? last : --it);}
  34. bool sortbysec(const pair<ll,ll> &a,const pair<ll,ll> &b)
  35. {
  36.     return (a.second < b.second);
  37. }
  38. #define debugxx(v) {for(auto x:v){cout<<x.fi<<" "<<x.se<<endl;}cout<<endl;}
  39. #define debugx(v){for(auto y:v) {cout<<y<<" ";}cout<<endl;}
  40. #define debug(x) cout<<#x<<" ";_print(x); cout<<endl;
  41. typedef unsigned long long ull;
  42. typedef long double lld;
  43. void _print(ll t) {cout << t;}
  44. void _print(int t) {cout << t;}
  45. void _print(string t) {cout << t;}
  46. void _print(char t) {cout << t;}
  47. void _print(lld t) {cout << t;}
  48. void _print(double t) {cout << t;}
  49. void _print(ull t) {cout << t;}
  50.  
  51. template <class T, class V> void _print(pair <T, V> p);
  52. template <class T> void _print(vector <T> v);
  53. template <class T> void _print(set <T> v);
  54. template <class T, class V> void _print(map <T, V> v);
  55. template <class T> void _print(multiset <T> v);
  56. template <class T, class V> void _print(pair <T, V> p) {cout << "{"; _print(p.fi); cout << ","; _print(p.se); cout << "}";}
  57. template <class T> void _print(vector <T> v) {cout << "[ "; for (T i : v) {_print(i); cout << " ";} cout << "]";}
  58. template <class T> void _print(set <T> v) {cout << "[ "; for (T i : v) {_print(i); cout << " ";} cout << "]";}
  59. template <class T> void _print(multiset <T> v) {cout << "[ "; for (T i : v) {_print(i); cout << " ";} cout << "]";}
  60. template <class T, class V> void _print(map <T, V> v) {cout << "[ "; for (auto i : v) {_print(i); cout << " ";} cout << "]";}
  61. //Don't hesitate to ask me if you don't understand my code.......Happy coding,Tahmid...;
  62.  
  63. #define pii pair<int,int>
  64.  
  65. int fx[]={-2,-2,2,2,1,1,-1,-1};
  66. int fy[]={1,-1,1,-1,2,-2,2,-2};
  67. int cell[9][9];
  68. int d[9][9],vis[9][9];
  69. int row=8,col=8;
  70.  
  71. void bfs(int sx,int sy)
  72. {
  73.     memset(vis,0,sizeof vis);
  74.     memset(d,0,sizeof d);
  75.     vis[sx][sy]=1;
  76.     queue<pii>q;
  77.     q.push(pii(sx,sy));
  78.     while(!q.empty())
  79.     {
  80.         pii top=q.front(); q.pop();
  81.         for(int k=0;k<8;k++)
  82.         {
  83.             int tx=top.fi+fx[k];
  84.             int ty=top.se+fy[k];
  85.             if(tx>=0 and tx<row and ty>=0 and ty<col and vis[tx][ty]==0)
  86.             {
  87.                 vis[tx][ty]=1;
  88.                 d[tx][ty]=d[top.fi][top.se]+1;
  89.                 q.push(pii(tx,ty));
  90.             }
  91.         }
  92.     }
  93. }
  94.  
  95. int main()
  96. {
  97.  
  98.      fastio;
  99.      ll t,i,j;
  100.      string s1,s2;
  101.      while(cin>>s1>>s2)
  102.      {
  103.  
  104.          ll x=s1[0]-'a';
  105.          ll y=s1[1]-'1';
  106.  
  107.  
  108.          bfs(x,y);
  109.  
  110.          ll a=s2[0]-'a';
  111.  
  112.          ll b=s2[1]-'1';
  113.  
  114.          cout<<"To get from "<<s1<<" to "<<s2<<" takes "<<d[a][b]<<" "<<"knight moves."<<endl;
  115.  
  116.  
  117.      }
  118.  
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement