#include #include #include #include #include #include #include using namespace std; int main(int argc, const char* argv[]) { int K; vector m; int s[30][30][4]; const int dx[4]={0,0,1,-1},dy[4]={-1,1,0,0}; int h,w; ifstream inf("kangaroo.in"); inf>>K; for(int i = 0; i < K; ++i) { inf>>h>>w; m.resize(h); for(int j = 0; j < h; ++j) inf>>m[j]; map q; for(int j = 0; j < h; ++j) for(int k = 0; k < w; ++k) for(int l = 0; l < 4; ++l) if (m[j][k]=='K') { s[j][k][l]=0; q[j*1000+k*10+l] = 0; } else s[j][k][l] = -1; int result = -1; while(!q.empty()) { int v,mint =987654321; map::iterator mini; for(map::iterator it = q.begin(); it != q.end(); ++it) if ( it->second < mint ) { mint = it->second; mini = it; } v = mini->first; q.erase(mini); int r=v/1000,c=v%1000/10,d=v%10; if ( m[r][c]=='G') { result = mint; break; } for(int k = 0; k < 4; ++k) for(int j = 1; j <= 5 && r+dx[k]*j>=0 && r+dx[k]*j=0 && c+dy[k]*j t ) { q[(r+dx[k]*j)*1000+(c+dy[k]*j)*10+k] = s[r+dx[k]*j][c+dy[k]*j][k] = t; } } } cout<<"Data Set "<