Submission #1021295

#TimeUsernameProblemLanguageResultExecution timeMemory
1021295ZeroCoolKronican (COCI16_kronican)C++14
100 / 100
562 ms8640 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ar array #define int long long const int N = 20; const int INF = 1e17; const int X = 1e5 + 20; #pragma GCC optimize("unroll-loops,O2,Ofast,O3") #pragma GCC target("avx2") signed main(){ios_base::sync_with_stdio(false);cin.tie(0); int n, k; cin>>n>>k; int A[n][n]; for(int i =0; i < n;i++){ for(int j = 0;j < n;j++){ cin>>A[i][j]; } } int dp[(1 << n)]; for(int i = 0;i < (1 << n);i++)dp[i] = INF; dp[(1 << n) - 1] = 0; int ans = INF; for(int msk = (1 << n) - 1;msk >= 0;msk--){ if(__builtin_popcount(msk) <= k){ ans = min(ans, dp[msk]); continue; } for(int j = 0;j < n;j++){ if((1 << j) & msk){ for(int k = 0;k < n;k++){ if(j == k)continue; if((1 << k) & msk){ dp[msk ^ (1 << j)] = min(dp[msk ^ (1 << j)], dp[msk] + A[j][k]); } } } } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...