蒟蒻求助
查看原帖
蒟蒻求助
504237
lk323232楼主2022/6/26 08:15

之过了三个点,看了半天没改出来

#include<bits/stdc++.h>
using namespace std;
int l,r,c,ans[901][31],x1,y11,x2,y2;
char mp[901][31];
bool vis[901][31];
int dx[6]={1,-1,0,0,0,0};
int dy[6]={0,0,1,-1,0,0};
queue<int>qx,qy;
int main(){
	cin>>l>>r>>c;
	dx[4]=r;
	dx[5]=-r;
	for(int i=1;i<=l*r;++i){
		for(int j=1;j<=c;++j){
			cin>>mp[i][j];
			if(mp[i][j]=='S'){
				x1=i;y11=j;
			}
			if(mp[i][j]=='E'){
				x2=i;y2=j;
			}	
		}
	}
	qx.push(x1);
	qy.push(y11);
	vis[x1][y11]=true;
	while(!qx.empty()){
		for(int i=0;i<6;++i){
			int nx=qx.front()+dx[i];
			int ny=qy.front()+dy[i];
			if((qx.front()%r==0&&dx[i]==1)||((qx.front()-1)%r==0&&dx[i]==-1)) continue; 
			if(nx>0&&nx<=l*r&&ny>0&&ny<=c&&(mp[nx][ny]=='.'||mp[nx][ny]=='E')&&!vis[nx][ny]){		
				vis[nx][ny]=true;
				ans[nx][ny]=ans[qx.front()][qy.front()]+1;
				qx.push(nx);
				qy.push(ny);
			}
		}
		qx.pop();
		qy.pop();
	}
	if(ans[x2][y2]!=0) printf("Escaped in %d minute(s).",ans[x2][y2]);
	else cout<<"Trapped!";
	return 0;
}
2022/6/26 08:15
加载中...