fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n,m,ma[100][100],minn=1000000,r,c,ans=0;
  5. int dr[4]={ 1, 0,-1, 0};
  6. int dc[4]={ 0, 1, 0,-1};
  7. bool in(int r,int c){
  8. return r<n&&r>=0&&c<m&&c>=0;
  9. }
  10. int mini(int r,int c){
  11. int index=-1,min=1000000;
  12. for(int i=0;i<4;i++){
  13. //cout<<" "<<i<<" "<<ma[r+dr[i]][c+dc[i]]<<" "<<in(r+dr[i],c+dc[i])<<"\n";
  14. if(in(r+dr[i],c+dc[i])&&ma[r+dr[i]][c+dc[i]]!=1000000&&ma[r+dr[i]][c+dc[i]]<min){
  15. index=i;
  16. min=ma[r+dr[i]][c+dc[i]];
  17. ma[r][c]=1000000;
  18. }
  19. }return index;
  20. }
  21. int main() {
  22. cin>>n>>m;
  23. for(int i=0;i<n;i++) for(int j=0;j<m;j++){
  24. cin>>ma[i][j];
  25. if(ma[i][j]<minn){
  26. minn=ma[i][j];
  27. r=i;
  28. c=j;
  29. }
  30. }
  31. for(int i=0;i<n*m;i++){
  32. ans+=ma[r][c];
  33. //cout<<"rcma "<<r<<" "<<c<<" "<<ma[r][c]<<"\n";
  34. int index=mini(r,c);
  35. if (index==-1)break;
  36. r+=dr[index];
  37. c+=dc[index];
  38. }cout<<ans;
  39. }
Success #stdin #stdout 0s 5304KB
stdin
1 7
1 2 3 4 5 6 7
stdout
28