
Untitled
By: a guest on
Jun 1st, 2012 | syntax:
C++ | size: 1.94 KB | hits: 13 | expires: Never
include <iostream>
# include <cstdio>
# include <queue>
# include <string>
# include <algorithm>
# define mp make_pair
# define pii pair <int, int>
using namespace std;
//'a'=97 'z'=122 '1'=49(WTF?!)
queue <pii> qw;
queue <int> o;
int clr[10][10];
pii k1; //0
pii k2; //1
pii k[8];
int ans=-1,r[10][10];
void bfs ()
{
while (!qw.empty())
{
pii z=qw.front();
int wtf=o.front();
qw.pop();
o.pop();
for (int i=0;i<8;i++)
{
if (z.first+k[i].first>0 && z.first+k[i].first<9 && z.second+k[i].second>0 && z.second+k[i].second<9)
if (r[z.first+k[i].first][z.second+k[i].second]==-1)
{
pii t=mp(z.first+k[i].first,z.second+k[i].second);
qw.push(t);
r[t.first][t.second]=r[z.first][z.second]+1;
clr[t.first][t.second]=wtf;
o.push(wtf);
}
else
if (wtf!=clr[z.first+k[i].first][z.second+k[i].second])
{
ans=r[z.first+k[i].first][z.second+k[i].second];
return;
}
}
}
}
int main ()
{
//freopen ("1.txt","r",stdin);
fill (&clr[0][0],&clr[9][9],-1);
fill (&r[0][0],&r[9][9],-1);
k[0]=mp(-1,-2);
k[1]=mp(-1,2);
k[2]=mp(1,-2);
k[3]=mp(1,2);
k[4]=mp(2,-1);
k[5]=mp(2,1);
k[6]=mp(-2,-1);
k[7]=mp(-2,1);
string pos1,pos2;
cin>>pos1>>pos2;
k1=mp(pos1[0]-96,pos1[1]-48);
k2=mp(pos2[0]-96,pos2[1]-48);
qw.push(k1);
qw.push(k2);
r[k1.first][k1.second]=0;
r[k2.first][k2.second]=0;
o.push(0);
o.push(1);
clr[k1.first][k1.second]=0;
clr[k2.first][k2.second]=1;
bfs();
cout<<ans<<endl;
return 0;
}