Advertisement
ThirtyThird

Trying not to

Oct 23rd, 2014
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. lol=open('input.txt','r')
  2. height,width=lol.readline().split()
  3. ax,ay=lol.readline().split()
  4. bx,by=lol.readline().split()
  5.  
  6. a=[ ['X' for j in range(-1,int(width)+1)] for i in range(-1,int(height)+1)]
  7.  
  8. for i in range(1,int(height)+1):
  9. a[i][1:int(width)+1]=list(lol.readline())[:len(a[i])-2]
  10.  
  11. px=[-10 for j in range(int(width)*int(height))]
  12. py=[-10 for j in range(int(width)*int(height))]
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23. def YOBA(ax,bx,ay,by,H,W):
  24. dx=[1,0,-1,0]
  25. dy=[0,1,0,-1]
  26. stop=True
  27. d=0
  28. a[ax][ay]=0
  29. while 1==1:
  30. stopy=True
  31. for y in range(1,H+1):
  32. for x in range(1,W+1):
  33. if a[y][x]==d:
  34. for k in range (0,4):
  35. if a[y+dy[k]][x+dx[k]]=='.':
  36. stopy=False
  37. a[y+dy[k]][x+dx[k]]=d+1
  38.  
  39. d=d+1
  40.  
  41. if stopy or a[by][bx]=='X':
  42. break
  43.  
  44. if (a[by][bx]=='X'):
  45. return False
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53. lene=a[bx][by]
  54. x=by
  55. y=bx
  56. d=lene
  57.  
  58. while d>0:
  59. px[d]=x
  60. py[d]=y
  61. d=d-1
  62. for k in range(4):
  63. if a[y + dy[k]][x + dx[k]]==d:
  64. x=x+dx[k]
  65. y=y+dy[k]
  66. break
  67.  
  68. px[0]=ax
  69. py[0]=ay
  70. return True
  71.  
  72.  
  73.  
  74. d=0
  75. try:
  76. if YOBA(int(ax)+1,int(bx)+1,int(ay)+1,int(by)+1,int(height),int(width)):
  77. for i in range(len(px)):
  78. if px[i]>-1:
  79. d=d+1
  80. print(d-1)
  81. else:
  82. print(-1)
  83. except:
  84. print(-1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement