0pts求调
查看原帖
0pts求调
1383625
kkksc_tbh楼主2025/7/28 19:45
#include<bits/stdc++.h>
#define int long long
#define endl "\n"
using namespace std;
const int N=130;
int r,c;
char ch[N][N];
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int vis[N][N];
struct node{
	int x,y;
};
vector<node> ans;
void print(){
	for(int i=0;i<ans.size();i++){
		cout<<ans[i].x<<' '<<ans[i].y<<endl;
	}
	return ;
}
bool check(int x,int y){
	return (x>=1&&x<=r&&y>=1&&y<=c&&vis[x][y]==0&&ch[x][y]!='*');
}
void bfs(){
	queue<node> Q;
	Q.push({1,1});
	ans.push_back({1,1});
	if(r==1&&c==1){
		print();
		return ;
	}
	while(Q.size()){
		node u=Q.front();
		Q.pop();
		for(int i=0;i<4;i++){
			int xx=u.x+dx[i];
			int yy=u.y+dy[i];
			if(check(xx,yy)){
				vis[xx][yy]=1;
				ans.push_back({xx,yy});
				if(xx==r&&yy==c){
					print();
					return ;
				}
				Q.push({xx,yy});
			}
		}
	}
	return ;
}
signed main(){
	cin>>r>>c;
	for(int i=1;i<=r;i++){
		for(int j=1;j<=c;j++){
			cin>>ch[i][j];
		}
	}
	bfs();
	return 0;
}

输出很多奇奇怪怪的坐标

2025/7/28 19:45
加载中...