fork download
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. typedef long long lint;
  5. int Mv[3][2]={{-1,1},{0,1},{1,0}};
  6. int Vis[20][20]={};
  7.  
  8. int main()
  9. {
  10. int W, H, A, B, C, D;
  11. scanf("%d %d %d %d %d %d", &W, &H, &A, &B, &C, &D);
  12. queue<int> X, Y;
  13. Vis[A][B]=1; X.push(A); Y.push(B);
  14. while(!X.empty()){
  15. int x = X.front(), y = Y.front();
  16. printf("%d %d\n", x, y);
  17. X.pop(); Y.pop();
  18. for(int k=0; k<3; k++){
  19. int nx = x+Mv[k][0], ny = y+Mv[k][1];
  20. if(ny<1 || ny>H){ printf("NO"); continue; }
  21. if(nx<1 || nx>((ny&1)?W:W-1)){ printf("NO"); continue; }
  22. if(!Vis[nx][ny]){
  23. int Ans=0;
  24. for(int a=0; a<3; a++){
  25. int px = nx-Mv[a][0], py = nx-Mv[a][1];
  26. if(py<1 || py>H) continue;
  27. if(px<1 || px>((py&1)?W:W-1)) continue;
  28. Ans += Vis[px][py];
  29. }Vis[nx][ny] = Ans;
  30. }
  31. }
  32. }printf("%d\n", Vis[C][D]);
  33. }
  34.  
Success #stdin #stdout 0s 5608KB
stdin
6 7
2 3 6 7
stdout
2 3
0