WA#1#3,TLE#2#10
查看原帖
WA#1#3,TLE#2#10
565707
mediocre_楼主2023/7/21 20:02
#include<bits/stdc++.h>
using namespace std;
const int N = 1005;
const int fx[4] = {-1, 0, 0, 1};
const int fy[4] = {0, -1, 1, 0};
struct Node {
	int x, y;
};
queue <Node> q;
int n, m, a[N][N], cis[N][N], ans;
bool vis[N][N];
int main() {
	scanf("%d%d", &n, &m);
	for (int i = 1; i <= n; ++i)
	    for (int j = 1; j <= n; ++j)
	        scanf("%d", &a[i][j]);
	for (int i = 1; i <= n; ++i)
	    for (int j = 1; j <= n; ++j) {
	    	memset(vis, 0, sizeof(vis));
	    	memset(cis, 0, sizeof(cis));
	    	cis[i][j] = 1;
			q.push(Node{i, j});
			while (!q.empty()) {
				Node u = q.front();
				q.pop();
				for (int k = 0; k < 4; ++k) {
					int nx = u.x + fx[k];
					int ny = u.y + fy[k];
					if (a[nx][ny] < a[u.x][u.y] && !vis[nx][ny]) {
						vis[nx][ny] = true;
						cis[nx][ny] = cis[u.x][u.y] + 1;
						q.push(Node{nx, ny});
					}
				}
			}
			for (int k = 1; k <= n; ++k)
			    for (int l = 1; l <= n; ++l)
			        ans = max(ans, cis[k][l]);
		}
	printf("%d", ans);
	return 0;
}
2023/7/21 20:02
加载中...