30 求调!
查看原帖
30 求调!
752069
DonBeUpLate楼主2023/3/6 19:54
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int n,m,a[maxn][maxn],ans,cnt;
struct node{
	int x,y;
};
queue<node>q;
int vis[maxn][maxn];
int dx[]={0,0,1,-1},dy[]={1,-1,0,0};
int bfs(node s) {
	memset(vis,0,sizeof(vis));
	cnt=1;
	q.push(s);
	vis[s.x][s.y]=1;
	while(!q.empty()) {
		node u=q.front();
		q.pop();
		for(int i=0;i<4;i++) {
			int nx=u.x+dx[i];
			int ny=u.y+dy[i];
			if(nx<1||nx>n||ny<1||ny>m) continue;
			if(a[nx][ny]>=a[u.x][u.y]) continue;
			if(vis[nx][ny]==1) continue;
			vis[nx][ny]=1;
			cnt++;
			q.push((node){nx,ny});
		}
	}
	return cnt;
}
int main() {
	cin>>n>>m;
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) cin>>a[i][j];
	}
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=m;j++) {
			ans=max(ans,bfs((node){i,j}));
		}
	}
	cout<<ans;
    return 0;
}
2023/3/6 19:54
加载中...