一直不知道哪错了,wa了第二个点。但特殊情况已经判断了
#include <bits/stdc++.h>
using namespace std;
long long n,kx,ky,a[1005][1005],mf,mg,sum_f,sum_g,mark[1005][1005],i,j,op,x[15]={0,0,0,1,1,1,-1,-1,-1},y[15]={0,1,-1,0,1,-1,0,1,-1};
void bfs(int aa,int bb){
if(aa>=1 &&aa <=n&& bb>=1 && bb<=n && mark[aa][bb]!=a[i][j]){
mark[aa][bb]=a[i][j];
for(int k=1; k<=8; ++k){
if(aa+x[k]>=1 && aa+x[k]<=n && bb+y[k]>=1 && bb+y[k]<=n){
if(a[aa+x[k]][bb+y[k]]==a[i][j]){
bfs(aa+x[k],bb+y[k]);
}
if(a[aa+x[k]][bb+y[k]]>a[i][j]){
mg=1;
}
if(a[aa+x[k]][bb+y[k]]<a[i][j]){
mf=1;
}
}
}
}
}
int main(){
cin>>n;
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
scanf("%lld",&a[i][j]);
if(a[i][j]!=a[1][1]){
op=1;
}
}
}
if(op==0){
cout<<1<<" "<<1;
return 0;
}
for(i=1; i<=n; i++){
for(j=1; j<=n; j++){
kx=i,ky=j;
bfs(i,j);
if(mf==1 && mg==0){
sum_f++;
}
if(mf==0 && mg==1){
sum_g++;
}
mf=mg=0;
}
}
cout<<sum_f<<" "<<sum_g;
return 0;
}