Submission #1350858

#TimeUsernameProblemLanguageResultExecution timeMemory
1350858jumpKronican (COCI16_kronican)C++20
100 / 100
506 ms4512 KiB
#include<bits/stdc++.h>
const int va=(1<<20)+10;
int v[30][30],dp[va];
int main(){
    //std::ios_base::sync_with_stdio(0);
    //std::cin.tie(nullptr);
    int n,k;
	std::cin>>n >>k;
    int ans=1e9;
    for(int i=0;i<n;i++)
	for(int j=0;j<n;j++)
	std::cin>>v[i][j];
    for(int i=0;i<(1<<n);i++)dp[i]=1e9;
    dp[(1<<n)-1]=0;
    for(int i=(1<<n)-1;i>0;i--){
        if(__builtin_popcount(i)==k)ans=std::min(ans,dp[i]);
        for(int j=0;j<n;j++) if(i&(1<<j)){
            for(int x=0;x<n;x++) if(x!=j && i&(1<<x)){
                dp[i^(1<<j)]=std::min(dp[i^(1<<j)],dp[i]+v[j][x]);
            }
        }
    }
    std::cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...