# 未分類

b689 - 2. 棕櫚迷宮

🔗 前往 ZeroJudge 原題

⚠️ 題目內容過短,可能是圖片或 PDF。請手動補齊。

程式碼

#include <iostream>
using namespace std;
int x,y,ans[21][21],maxa,ax,ay;
char mp[21][21];
void fd(int xi,int yi,int time){
	if(xi<0||yi<0||xi>=x||yi>=y||mp[xi][yi]=='#'||(ans[xi][yi]!=0&&time>=ans[xi][yi]))return;
	if(ans[xi][yi]==0)ans[xi][yi]=time;
	else ans[xi][yi]=min(ans[xi][yi],time);
	if(ans[xi][yi]>maxa){
		ax=xi;
		ay=yi;
		maxa=ans[xi][yi];
	}
	fd(xi+1,yi,time+1);
	fd(xi-1,yi,time+1);
	fd(xi,yi+1,time+1);
	fd(xi,yi-1,time+1);
	return;
}
int main(){
	while(cin >> x >> y){
		for(int i=0;i<x;++i){
			for(int j=0;j<y;++j){
				ans[i][j]=0;
				cin >> mp[i][j];
			}
		}
		for(int i=0;i<x;++i){
			if(mp[i][0]=='.'){
				fd(i,0,1);
				break;
			}
			if(mp[i][y-1]=='.'){
				fd(i,y-1,1);
				break;
			}
		}
		for(int j=0;j<y;++j){
			if(mp[0][j]=='.'){
				fd(0,j,1);
				break;
			}
			if(mp[x-1][j]=='.'){
				fd(x-1,j,1);
				break;
			}
		}
		cout << ax+1 << " " << ay+1 << "\n"; 
		
	}
} 

Discussion