Untitled
unknown
plain_text
9 months ago
2.8 kB
5
Indexable
/**
- author : Nora
- created : 25.1.25 9:3:3 pm.
**/
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'
#define ld long double
#define bye return 0
#define pb push_back
#define pfr pop_front
#define pbc pop_back
#define pll pair<ll, ll>
#define ff first
#define ss second
#define NO cout<<"NO"
#define YES cout<<"YES"
#define all(v) v.begin(), v.end()
const ll N = 200007;
const ll mod = 1000000007;
const ll MAX=1e18;
map<pair<char,ll>, vector<pair<char,ll>>> g;
queue<pair<char,ll>> q;
map<pair<char,ll>,ll> dist;
void bfs(char c, ll n){
dist[{c,n}] = 0;
q.push({c,n});
while (!q.empty()){
char c1 = q.front().ff;
ll n1 = q.front().ss;
q.pop();
for (auto [c2,n2] : g[{c1,n1}]){
if (dist[{c2,n2}] == -1){
dist[{c2,n2}] = dist[{c1,n1}] + 1;
q.push({c2,n2});
}
}
}
}
void solve() {
for (char c = 'a'; c <= 'h'; c++){
for (ll n = 1; n <= 8; n++){
char c1 = c-2;
char c2 = c-1;
char c3 = c+1;
char c4 = c+2;
char c5 = c+2;
char c6 = c+1;
char c7 = c-1;
char c8 = c-2;
ll n1 = n+1;
ll n2 = n+2;
ll n3 = n+2;
ll n4 = n+1;
ll n5 = n-1;
ll n6 = n-2;
ll n7 = n-2;
ll n8 = n-1;
if (c1 >= 'a' and c1 <= 'h' and n1 >= 1 and n1 <= 8) g[{c,n}].pb({c1,n1});
if (c2 >= 'a' and c2 <= 'h' and n2 >= 1 and n2 <= 8) g[{c,n}].pb({c2,n2});
if (c3 >= 'a' and c3 <= 'h' and n3 >= 1 and n3 <= 8) g[{c,n}].pb({c3,n3});
if (c4 >= 'a' and c4 <= 'h' and n4 >= 1 and n4 <= 8) g[{c,n}].pb({c4,n4});
if (c5 >= 'a' and c5 <= 'h' and n5 >= 1 and n5 <= 8) g[{c,n}].pb({c5,n5});
if (c6 >= 'a' and c6 <= 'h' and n6 >= 1 and n6 <= 8) g[{c,n}].pb({c6,n6});
if (c7 >= 'a' and c7 <= 'h' and n7 >= 1 and n7 <= 8) g[{c,n}].pb({c7,n7});
if (c8 >= 'a' and c8 <= 'h' and n8 >= 1 and n8 <= 8) g[{c,n}].pb({c8,n8});
}
}
ll n1,n2;
char c1,c2;
while (cin>>c1>>n1>>c2>>n2){
for (char c = 'a'; c <= 'h'; c++){
for (ll n = 1; n <= 8; n++){
dist[{c,n}] = -1;
}
}
bfs(c1,n1);
cout<<"To get from "<<c1<<n1<<" to "<<c2<<n2<<" takes "<<dist[{c2,n2}]<<" knight moves."<<endl;
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll testcases=1;
//cin>>testcases;
while (testcases--) {
solve();
cout<<endl;
}
}
Editor is loading...
Leave a Comment