TLE求调
查看原帖
TLE求调
1087173
guer_loser_lcz楼主2024/3/10 13:57
#include<bits/stdc++.h>
using namespace std;
int t,n,m;
char a[2110][2110];
bool vis[2110][2110];
struct note{
	int x,y;
	string s;
};
queue<note> q;
int main(){
	std::ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>t;
	while(t--){
		cin>>n>>m;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
//			for(int i=0;i<=n+1;i++){
//				for(int j=0;j<=m+1;j++){
//					cout<<vis[i][j];
//				}
//			cout<<endl;
//			}
		note k={1,1,""};
		vis[1][1]=1;
		q.push(k);
		bool f=0;
		while(!q.empty()){
			note k=q.front();
			q.pop();
			if(k.x==n&&k.y==m){
				cout<<k.s.size()<<endl;
				cout<<k.s<<endl;
				f=1;
				break;
			}
			if(a[k.x-1][k.y]!=a[k.x][k.y]&&a[k.x-1][k.y])if(!vis[k.x-1][k.y]){vis[k.x-1][k.y]=1;q.push({k.x-1,k.y,k.s+'U'});}
			if(a[k.x+1][k.y]!=a[k.x][k.y]&&a[k.x+1][k.y])if(!vis[k.x+1][k.y]){vis[k.x+1][k.y]=1;q.push({k.x+1,k.y,k.s+'D'});}
			if(a[k.x][k.y-1]!=a[k.x][k.y]&&a[k.x][k.y-1])if(!vis[k.x][k.y-1]){vis[k.x][k.y-1]=1;q.push({k.x,k.y-1,k.s+'L'});}
			if(a[k.x][k.y+1]!=a[k.x][k.y]&&a[k.x][k.y+1])if(!vis[k.x][k.y+1]){vis[k.x][k.y+1]=1;q.push({k.x,k.y+1,k.s+'R'});}
		}
		if(!f)cout<<-1<<endl;
		queue<note> e;
		swap(e,q);
	}
	return 0;
}
2024/3/10 13:57
加载中...