`bellman-ford`。
by Usada_Pekora @ 2023-02-21 18:00:46
这种思路我以前用过,循环 n*m 次能过
by vzcx_host @ 2023-02-21 18:02:23
@[空中之虎](/user/183344)
```cpp
#include <bits/stdc++.h>
const int x[] = {0, 1, -1, 0, 0};
const int y[] = {0, 0, 0, 1, -1};
int map[110][110];
int dp[110][110];
int ans = -1;
int main() {
int n, m;
std::cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
scanf ("%d", &map[i][j]);
dp[i][j] = 1;
}
}
for (int b = 1; b <= n * m; b++) {
bool upd = false;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
for (int k = 1; k <= 4; k++) {
if (map[i][j] > map[i + x[k]][j + y[k]])
if (dp[i + x[k]][j + y[k]] + 1 > dp[i][j])
dp[i][j] = dp[i + x[k]][j + y[k]] + 1, upd = true;
}
ans = std::max(ans, dp[i][j]);
}
}
if (!upd)
break;
}
std::cout << ans;
return 0;
}
```
by Usada_Pekora @ 2023-02-21 18:06:29
其实不算什么很新的思路,建图然后跑最长路。
by Usada_Pekora @ 2023-02-21 18:09:29
@[Industrial_banana](/user/193198) 我也试了循环n * m次,结果TLE了hhh
by 空中之虎 @ 2023-02-21 18:44:50
@[Usada_Pekora](/user/434929) 大概看明白了 谢谢大佬!
by 空中之虎 @ 2023-02-21 18:45:23