Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define MAX 1000007
- using namespace std;
- ifstream fin("lacusta.in");
- ofstream fout("lacusta.out");
- int n,m,i,j,v[107][107],d[107][107],p,u[107];
- int main()
- {
- ios::sync_with_stdio(false);
- fin >> n >> m;
- for(i = 1; i <= n; i++)
- for(j = 1; j <= m; j++)
- {
- fin >> v[i][j];
- d[i][j] = MAX;
- }
- d[1][1] = v[1][1];
- d[2][1] = v[2][1];
- for(i = 2; i <= m; i++)
- {
- d[1][i] = d[1][1]+v[1][i];
- d[2][i] = v[2][i]+d[1][i];
- }
- for(i = 2; i <= n; i++)
- {
- for(j = 1; j <= m; j++)
- u[j] = MAX;
- for(j = m; j >= 1; j--)
- {
- if(i%2 == 0)
- {
- for(p = m; p >= 2; p--)
- if(p != j)
- u[p] = min(u[p],d[i][j]+v[i][p]);
- }
- else
- {
- for(p = 2; p <= m; p++)
- if(p != j)
- u[p] = min(u[p],d[i-1][j]+v[i][p]);
- }
- }
- if(u[1] == MAX)
- u[1] = d[i][1];
- if(u[m] == MAX)
- u[m] = d[i][m];
- for(j = 1; j <= m; j++)
- {
- d[i][p] = u[p];
- if(i != n)
- d[i+1][j] = d[i][j]+v[i+1][j];
- }
- }
- for(i = 1; i <= n; i++)
- {
- for(j = 1; j <= m; j++)
- cout << d[i][j] << " ";
- cout << "\n";
- }
- fout << d[n][m];
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement