0104-Magic Tile

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=0104&lang=jp
すでに通ったマスを記録しておく。
同じマスを二度通った場合ループしていることが分かる。

#include <cstdio>
char m[102][102];//マップ
int main(){
	while(1){
		int h,w,x,y;
		scanf("%d%d",&h,&w);
		if(h==0&&w==0)return 0;
		for(y=0;y<h;y++)
			scanf("%s",m[y]);
		x=0;y=0;
		for(;;){
			h=m[y][x];m[y][x]='!';
			if(h=='!'){puts("LOOP");break;}
			else if(h=='v') y++;
			else if(h=='^') y--;
			else if(h=='>') x++;
			else if(h=='<') x--;
			else{printf("%d %d\n",x,y);break;}
		}
	}
	return 0;
}