#55565: c++ 直觀暴力解


61247091s@gapps.ntnu.edu.tw (wei)


#include <bits/stdc++.h>
using namespace std;

int r,c;
int a[105][105];
bool mp[105][105];

int main(){
    cin>>r>>c;
    int start=1000001,sr,sc;
    for(int i=0;i<r;i++){
        for(int j=0;j<c;j++){
            cin>>a[i][j];
            if(a[i][j]<start){start=a[i][j];sr=i;sc=j;}}
    }
    int dr[4]={1,-1,0,0};
    int dc[4]={0,0,1,-1};
    int total=start;
    mp[sr][sc] = true;
    while(1){
    int minval=1e9;
    int next_r=-1,next_c=-1;
    for(int k=0;k<4;k++){
        int cr=sr+dr[k];
        int cc=sc+dc[k];
        if(cr<0||cc<0||cr>=r||cc>=c)continue;
        if (mp[cr][cc]==true)continue;
        if(a[cr][cc]<minval){
            minval=a[cr][cc];
            next_r=cr;next_c=cc;}
    }   if(next_r==-1)break;
    sr=next_r;
    sc=next_c;
    total+=minval;
    mp[sr][sc] = true;
   
    }
    cout<<total<<endl;
    return 0;

}