Submission #1178870

#TimeUsernameProblemLanguageResultExecution timeMemory
1178870prideliqueeeKronican (COCI16_kronican)C++20
100 / 100
649 ms8620 KiB
#include<bits/stdc++.h> using namespace std; #define int long long signed main() { 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 sz=pow(2,n); int dp[sz]; memset(dp,127,sizeof dp); dp[sz-1]=0; int ans=LLONG_MAX; for(int i=sz-1;i>=0;i--) { if(__builtin_popcount(i)==k) ans=min(ans,dp[i]); for(int j=0;j<n;j++) { if((i&(1<<j))) { int mn=LLONG_MAX; for(int l=0;l<n;l++) { if(((i&(1<<l)))&&l!=j) { mn=min(mn,a[j][l]); } } dp[i&(~(1<<j))]=min(dp[i&(~(1<<j))],mn+dp[i]); //cout<<i<<" "<<(i&(~(1<<j)))<<" "<<mn<<" "<<endl; } } } //for(int i=0;i<sz;i++) //cout<<dp[i]<<" "; //cout<<(7&(1<<1)); cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...