Submission #243431

#TimeUsernameProblemLanguageResultExecution timeMemory
243431VEGAnnKronican (COCI16_kronican)C++14
100 / 100
746 ms4576 KiB
#include <bits/stdc++.h> #define sz(x) ((int)x.size()) using namespace std; const int N = 20; const int oo = 2e9; int a[N][N], ans = oo, n, k, f[(1 << N)]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef _LOCAL freopen("in.txt","r",stdin); #endif // _LOCAL cin >> n >> k; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) cin >> a[i][j]; fill(f, f + (1 << n), oo); f[(1 << n) - 1] = 0; for (int msk = (1 << n) - 1; msk > 0; msk--) if (__builtin_popcount(msk) <= k){ ans = min(ans, f[msk]); } else { for (int fr = 0; fr < n; fr++) if (msk & (1 << fr)){ int nw = (msk ^ (1 << fr)); for (int wh = 0; wh < n; wh++) if (nw & (1 << wh)) f[nw] = min(f[nw], f[msk] + a[fr][wh]); } } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...