90分求助!
查看原帖
90分求助!
760019
ZS_Lichi楼主2024/4/21 14:39

第二个点TLE

#include <bits/stdc++.h>
using namespace std;
const int N = 105;
int vis[N][N];
int mp[N][N];
int di[4] = {-1,1,0,0};
int dj[4] = {0,0,1,-1};
struct Node{
	int i,j,dis;
};
int n,m,maxn = 0, minn = 1000000,ans=0,si,sj,ei,ej;
int main(){
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			cin >> mp[i][j];
		}
	}
	for(int i = 1;i <= n;i++){
		for(int j = 1;j <= m;j++){
			si = i;
			sj = j;
			memset(vis,0,sizeof(vis));
			queue <Node> q;
			vis[si][sj] = 1;
			q.push((Node){si,sj,1});
			while(!q.empty()){
				Node now = q.front();
				q.pop();
				ans = max(ans,now.dis);
				for(int k = 0;k < 4;k++){
					int ni = now.i + di[k];
					int nj = now.j + dj[k];
					if(ni < 1 || nj < 1 || ni > n || nj > m || vis[ni][nj] >= now.dis+1 || mp[ni][nj] >= mp[now.i][now.j]) continue;
					vis[ni][nj] = now.dis + 1;
					q.push((Node){ni,nj,now.dis+1});
				}
			}
		}
	}

	cout << ans <<endl;
	return 0;
} 

2024/4/21 14:39
加载中...