#include <bits/stdc++.h> using namespace std; int main() { int n, m; cin >> n >> m; const int INF = 1e9; vector<int> dp(m, INF); // dp[j]: 走到当前行第 j 列的最小和 for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { int x; cin >> x; if (i == 0 && j == 0) dp[0] = x; // 起点 else if (j == 0) dp[j] = dp[j] + x; // 只能从上面来 else dp[j] = min(dp[j], dp[j - 1]) + x; // 上/左取小 } } cout << dp[m - 1] << '\n'; // 终点 return 0; }