灌佬多,代码求调
  • 板块灌水区
  • 楼主Flying_hp
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/23 15:08
  • 上次更新2024/8/23 16:52:52
查看原帖
灌佬多,代码求调
1123665
Flying_hp楼主2024/8/23 15:08

P10234,TLE

#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct noded{
	string s;
	ll val;
};
queue<pair<ll,ll>>q;
noded dist[2010][2010];
ll n,m;
ll movex[10]={-1,1,0,0};//up down left right
ll movey[10]={0,0,-1,1};
string moves[10]={"U","D","L","R"};
bool vis[2010][2010];
ll a[2010][2010],t;
void bfs(){
	while(q.size())q.pop();
	for(ll i=1;i<=n;i++){
		for(ll j=1;j<=m;j++)
		dist[i][j].val=LLONG_MAX,dist[i][j].s="",vis[i][j]=false;
	}
	dist[1][1].val=0;
	q.push({1,1});
	while(q.size()){
		pair<ll,ll> fv=q.front();
		vis[fv.first][fv.second]=true;
		q.pop();
		ll x=fv.first,y=fv.second;
		if(x==n&&y==m){
			cout<</*(*/dist[x][y].val/*==LLONG_MAX?-1:dist[x][y].val)*/<<endl;
			/*if(dist[x][y].val!=LLONG_MAX)*/cout<<dist[x][y].s<<endl;
			return;
		}
		for(ll i=0;i<4;i++){
			ll mx=x+movex[i];
			ll my=y+movey[i];
			if(mx>n||my>m||mx<0||my<0)continue;
			if(a[mx][my]==a[x][y])continue;
			if(vis[mx][my])continue;
			if(dist[mx][my].val<dist[x][y].val+1)continue;
			dist[mx][my].val=dist[x][y].val+1;
			dist[mx][my].s=dist[x][y].s+moves[i];
			q.push({mx,my});
		}
	}
	cout<<-1<<endl;
}
signed main(){
	cin>>t;
	while(t--){
		cin>>n>>m;
		for(ll i=1;i<=n;i++){
			string sa;
			cin>>sa;
			for(ll j=1;j<=m;j++){
				a[i][j]=sa[j-1];
			}
		}
		bfs();
	}
	return 0;
}

2024/8/23 15:08
加载中...