Submission #884555

#TimeUsernameProblemLanguageResultExecution timeMemory
884555vjudge1Kronican (COCI16_kronican)C++17
0 / 100
925 ms4440 KiB
#include <bits/stdc++.h> using namespace std; //#define int long long const int mod = 1e9 + 7; const int maxn = 20; const int infinito = 1e9; int n,k; int v[maxn][maxn]; int dp[(1<<maxn) + 10]; int contaum(int g){ int x = 0; while(g > 0){ x++; g = g - (g&(-g)); } return x; } signed main(){ cin >> n >> k; for(int i = 0; i < n; i++){ for(int y = 0; y < n; y++){ cin >> v[i][y]; } } dp[0] = 0; for(int i = 1; i < (1<<n); i++){ int uns = contaum(i); if(uns <= k){ dp[i] = 0; } else{ dp[i] = infinito; for(int y = 0; y < n; y++){ for(int j = 0; j < n; j++){ if(j != y){ if(((i&(1<<j)) >= 1) && ((i&(1<<y)) >= 1)){ dp[i] = min(dp[i], dp[i^(1<<y)] + v[y][j]); } } } } } } cout << dp[(1<<n) - 1] << endl; return 1; }
#Verdict Execution timeMemoryGrader output
Fetching results...