#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll n,m,a,b,c;
struct node{
ll x,y,t,used;
};
node ttt[3][1001][1001];
ll addx[4]={0,0,1,-1};
ll addy[4]={1,-1,0,0};
queue<node> q;
ll maps[1001][1001];
ll k=0;
ll ans=1e18;
ll minn(ll a,ll b){
return a<b?a:b;
}
void bfs(){
while(!q.empty()){
node t=q.front();
q.pop();
ttt[k][t.x][t.y].used=0;
for(ll i=0;i<4;i++){
ll x=t.x+addx[i],y=t.y+addy[i];
if(x<=n&&x>=1&&y<=m&&y>=1&&ttt[k][x][y].t>t.t+maps[x][y]){
ttt[k][x][y].t=t.t+maps[x][y];
if(!ttt[k][x][y].used)q.push(ttt[k][x][y]);
ttt[k][x][y].used=1;
}
}
}
}
int main(){
cin>>n>>m>>a>>b>>c;
for(ll i=1;i<=n;i++){
for(ll j=1;j<=m;j++){
cin>>maps[i][j];
for(ll d=0;d<4;d++){
ttt[d][i][j].x=i;
ttt[d][i][j].y=j;
ttt[d][i][j].t=INT_MAX;
ttt[d][i][j].used=0;
}
}
}
ttt[0][1][a].t=maps[n][a];
ttt[1][n][b].t=maps[1][b];
ttt[2][n][c].t=maps[1][c];
ttt[2][n][c].used=1;
ttt[1][n][b].used=1;
ttt[0][1][a].used=1;
q.push(ttt[0][1][a]);
bfs();
k++;
q.push(ttt[1][n][b]);
bfs();
k++;
q.push(ttt[2][n][c]);
bfs();
/* for(ll d=0;d<3;d++){
for(ll i=1;i<=n;i++){
for(ll j=1;j<=m;j++){
cout<<ttt[d][i][j].t<<" ";
}
cout<<endl;
}
cout<<endl;
}
*/
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
ans=minn(ans,ttt[0][1][a].t+ttt[1][n][b].t+ttt[2][n][c].t);
}
}
cout<<ans;
return 0;
}
[这里](https://www.luogu.com.cn/problem/P6833)全是RE,请问出了什么问题?