蒟蒻调了好久没找到问题qwq
#include<bits/stdc++.h>
using namespace std;
int n,a[1002][1002],ab[1002][1002],t[3];
int op[9][2]={{0,0},{-1,0},{1,0},{0,-1},{0,1},{-1,1},{1,-1},{-1,-1},{1,1}};
int dfs(int i,int j,int f){
if(a[i][j]==f) ab[i][j]=1;
else{
return int(a[i][j]<f);//1是山,0是谷。
}
int bol=-2;
for(int q=1;q<=8;++q){
int x=i+op[q][0],y=j+op[q][1];
if(x>0&&x<=n&&y>0&&y<=n&&(ab[x][y]&&a[x][y]!=f||!ab[x][y])){
int k=dfs(x,y,f);
if(k==-2){}
else if(bol==-2) bol=k;
else if(k==-1||bol==-1){return -1;}
else{
if(bol!=k) return -1;
}
}
}
//cout<<bol<<endl;
return bol;
}
int main(){
cin>>n;int ta;
if(n==0) cout<<0<<" "<<0;
if(!n) return 0;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
scanf("%d",&a[i][j]);
if(i==j&&i==1) ta=a[i][j];
if(ta!=a[i][j]) ta=-999;
}
}
if(ta!=-999){
cout<<1<<" "<<1;
return 0;
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(!ab[i][j]) t[(dfs(i,j,a[i][j]))+1]++;
}
}
cout<<t[2]<<" "<<t[1];
return 0;
}