UVa 10350 - Liftless EME Solution

#include <iostream>
#include <vector>
#include <bitset>
#include <queue>
#include <algorithm>
#include <stack>
#include <sstream>
#include <string>
using namespace std;
vector<vector<int> > dp;
vector<vector<vector<int> > > a;
int main(){
    while(ws(cin)&&!cin.eof()){
        string s;
        int n,m;
        cin>>s>>n>>m;
        a.assign(n,vector<vector<int> >(m+1,vector<int>(m+1)));
        dp.assign(n,vector<int>(m+1));
        for(int floor=0;floor<n-1;floor++){
            for(int hole1=1;hole1<=m;hole1++){
                for(int hole2=1;hole2<=m;hole2++)
                    cin>>a[floor][hole1][hole2];
            }
        }
        // for(int i=0;i<n;i++)
        //     for(int j=1;j<=m;j++)
        //         dp[i][j]=0;
        for(int i=1;i<n;i++){
            for(int j=1;j<=m;j++){
                int cur=1e6;
                for(int k=1;k<=m;k++)
                    cur=min(cur,dp[i-1][k]+a[i-1][k][j]);
                dp[i][j]=cur;
            }
        }
        int ans=1e6;
        for(int i=1;i<=m;i++)
            ans=min(ans,dp[n-1][i]);
        ans+=2*(n-1);
        cout<<s<<endl<<ans<<endl;
    }
}

Comments