#include #include using namespace std; int W,H; int dis[100][100][10],M[100][100]; bool ok(int a,int b,int c) { return a!=b&&b!=c&&c!=a&&(b>a&&b>c||b>W>>H; for(int i=0;i>M[i][j]; for(int I=0;I<10;I++) { dis[i][j][I]=114514; } } dis[0][0][0]=0; queue,int> >P; P.push(make_pair(make_pair(0,0),0)); while(!P.empty()) { int x=P.front().first.first,y=P.front().first.second; int a=P.front().second; if(x==H-1&&y==W-1) { cout<=H||ty>=W)continue; int c=M[tx][ty]; if(a==0||ok(a,b,c)) { int nxt=dis[x][y][a]+1; if(nxt