谁能帮我看一下
#include<bits/stdc++.h>
using namespace std;
bool vis[1005][1005];
int go[2][2]={{1,0},{0,1}};
struct a{
int x,y,t;
long long find;
};
int main()
{
memset(vis,true,sizeof(vis));
int n,m,q[1005][1005],tn,time[1005][1005];
long long maxm=0;
cin>>n>>m;
memset(time,0x3f3f3f3f,sizeof(time));
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) cin>>q[i][j];
cin>>tn;
int x,y,v;
for(int i=1;i<=tn;i++) cin>>x>>y>>v,time[x][y]=v;
queue<a>record;
record.push((a){1,1,0,q[1][1]});
vis[1][1]=false;
while(!record.empty())
{
a tmp=record.front();
int nx=tmp.x,ny=tmp.y,nt=tmp.t;
long long f=tmp.find;
maxm=max(f,maxm);
record.pop();
for(int i=0;i<2;i++)
{
int x_=nx+go[i][0],y_=ny+go[i][1],t_=nt+1;
if(x_>0&&x_<=m&&y_>0&&y_<=n&&t_<time[y_][x_]&&vis[y_][x_])
record.push((a){x_,y_,t_,f+q[y_][x_]}),vis[y_][x_]=false;
}
}
cout<<maxm;
return 0;
}