Submission #850844

#TimeUsernameProblemLanguageResultExecution timeMemory
850844tiagoKronican (COCI16_kronican)C++14
0 / 100
29 ms65536 KiB
#include <bits/stdc++.h> using namespace std; #define infinito 999999999 int n,k; int v[22][22]; int dp[(1<<21)][22]; int fib(int bitmask, 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); 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...