fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 1e3, OO = 0x3f3f3f3f;
  5.  
  6. int grid[N][N], mem[N][N];
  7. int tc, x, y;
  8. bool valid(int i, int j)
  9. {
  10. return i < y && j < x;
  11. }
  12. int solve(int i, int j)
  13. {
  14. if(i == y && j == x)
  15. return 0;
  16. if(mem[i][j] != -1) return mem[i][j];
  17. int opt1 = solve(i + 1, j) + grid[i][j];
  18. int opt2 = solve(i, j + 1) + grid[i][j];
  19.  
  20. return mem[i][j] = min(opt1, opt2);
  21. }
  22. int main()
  23. {
  24. scanf("%d", &tc);
  25. while(tc--)
  26. {
  27. memset(mem, -1, sizeof mem);
  28. scanf("%d %d", &y, &x);
  29. for(int i = 0 ; i < y; ++i)
  30. for(int j = 0; j < x; ++j)
  31. scanf("%d", &grid[i][j]);
  32. printf("%d\n", solve(0, 0));
  33. }
  34. return 0;
  35. }
Success #stdin #stdout 0.02s 7812KB
stdin
2
4
5
0 3 1 2 9
7 3 4 9 9
1 7 5 5 3
2 3 4 2 5
1
6
0 1 2 3 4 5
stdout
10
10