Python 2, 254 bytes
No libraries
def f(A,r=0,c=-1):
B=A[r];R=len(A)-1;C=len(B);i=1 in A[R]
if c<0:
for j in range(R*C+C):
if A[j/C][j%C]:i&=f(A,j/C,j%C)
return i&1
_=B[c];B[c]=0;i=_&(r==R)
if _:
if c>0:i|=f(A,r,c-1)
if r<R:i|=f(A,r+1,c)
if c<C-1:i|=f(A,r,c+1)
B[c]=_;return Ii
Note that the second and third level indents are formed with tabs in the byte count.