Submission #850848

#TimeUsernameProblemLanguageResultExecution timeMemory
850848tiagoKronican (COCI16_kronican)C++11
0 / 100
23 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define infinito 999999999 long long int n,k; long long int v[22][22]; long long int dp[(1<<21)][22]; long long int fib(long long int bitmask, long long int kk){ if(kk <= k){ return 0; } else if(dp[bitmask][kk] != infinito){ return dp[bitmask][kk]; } for(int i = 0; i < n; i++){ if((bitmask & (1<<i)) == 0){ for(int y = 0; y < n; y++){ if((bitmask & (1<<y)) == 0 && y != i ){ dp[bitmask][kk] = min(dp[bitmask][kk], fib((bitmask | (1<<i)), kk-1) + v[i][y]); } } } } return dp[bitmask][kk]; } int main(){ for(int i = 0; i < (1<<21)-1; i++){ for(int y = 0; y < 22; y++){ dp[i][y] = infinito; } } cin >> n >> k; for(int i = 0; i < n; i++){ for(int y = 0; y < n; y++){ cin >> v[i][y]; } } cout << fib(0,n); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...