Is the path correct?
C, 250 bytes
#define h x=(j+x-1+d%3)%j,i=(j+i+(d=='v')-(d==94))%j
char a[999],b[999];x,i,d=2,k,f;main(j){for(;gets(a+j*i);)j=strlen(a+j*i++);for(x=strchr(a,65)-a,i=x/j,x=x%j;!k*d;h)k|=b[f=j*i+x]&amp;1&lt;&lt;d%5,b[f]|=1&lt;&lt;d%5,(f=a[f])&amp;16?d=f:f&amp;4?h:f&amp;2?d=0:0;putchar(48+!k);}

This also requires that the input is padded with spaces.
Ungolfed:
#define h x=(j+x-1+d%3)%j,i=(j+i+(d=='v')-(d==94))%j 
char a[999],b[999];x,i,d=2,k,f;
main(j){
 for(;gets(a+j*i);)j=strlen(a+j*i++); //read lines and determine line length
 for(x=strchr(a,65)-a,i=x/j,x=x%j;    //the current position is 'A'
 !k*d; //as long as we have not arrived at 'B' 
       //and not travelled through the same cell and in the same direction twice
 h)    //advance one in the current direction
   k|=b[f=j*i+x]&amp;1&lt;&lt;d%5,b[f]|=1&lt;&lt;d%5,  //if we have already travelled  
                                       //through this cell in this direction
   (f=a[f])&amp;16?d=f //change direction if this cell is one of &lt;&gt;^v
   :f&amp;4?h          //if this cell is '&amp;', advance one in the current direction
   :f&amp;2?d=0:0;     //if we have reached 'B'
 putchar(48+!k);
}