系统告诉我 reference to 'plus' is ambigous
啥意思?
说明了啥?
#include<bits/stdc++.h>
#define printlf(x) print(x),putchar('\n')
#define printsp(x) print(x),putchar(' ')
using namespace std;
inline int read(){
int x=0;
bool w=0;
char c=getchar();
while(!isdigit(c)) w|=c=='-',c=getchar();
while(isdigit(c)) x=(x<<1)+(x<<3)+(c^48),c=getchar();
return w?-x:x;
}
inline void print(int x){
if(x<0) x=-x,putchar('-');
if(x>9) print(x/10);
putchar('0'+x%10);
}
struct node{
int x,y;
bool operator <(const node &p) const{
return p.x<x;
}
};
int n,m;
const int N=105;
int a[N][N],vis[N][N];
vector<node> plus;
const int dx[4]={1,-1,0,0};
const int dy[4]={0,0,1,-1};
inline int flood_fill(node in){
plus.clear();
queue<node> q;
q.push(in);
int res=0,cnt=0;
while(!q.empty()){
node tmp=q.front();q.pop();
int x=tmp.x,y=tmp.y;
for(register int i=0;i<4;++i){
int xx=x+dx[i],yy=y+dy[i];
if(a[xx][yy]>a[in.x][in.y]) {
if(vis[xx][yy]) vis[xx][yy]=0;
else plus.push_back=(node){xx,yy};
}
if(a[xx][yy]<a[in.x][in.y] && xx>0 && yy>0 && xx<=n && yy<=m)
q.push((node){xx,yy}),res+=a[xx][yy];
}
}
return res;
}
inline void Solve(){
int ans=0;
priority_queue<node> Q;
for(register int i=2;i<n;++i) Q.push((node){i,1}),Q.push((node){i,n}),vis[i][1]=vis[i][n]=1;
for(register int i=2;i<m;++i) Q.push((node){1,i}),Q.push((node){n,i}),vis[1][i]=vis[n][i]=1;
Q.push((node){1,1}),Q.push((node){1,n}),Q.push((node){n,1}),Q.push((node){n,n});
vis[1][1]=vis[1][n]=vis[n][n]=vis[n][1]=1;
while(!Q.empty()){
node tmp=Q.top();Q.pop();
if(!vis[tmp.x][tmp.y]) continue;
ans+=flood_fill(tmp);
for(register int i=0;i<plus.size();++i)
Q.push(plus[i]);
}
printlf(ans);
}
signed main(){
int T=read();
while(T--){
n=read(),m=read();
for(register int i=1;i<=n;++i)
for(register int j=1;j<=m;++j)
a[i][j]=read();
Solve();
}
return 0;
}