救救孩子
查看原帖
救救孩子
169555
Kiloio楼主2021/4/6 20:19

一直不知道哪错了,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;
}
2021/4/6 20:19
加载中...