제출 #1350746

#제출 시각아이디문제언어결과실행 시간메모리
1350746NewtonabcKronican (COCI16_kronican)C++20
100 / 100
499 ms4536 KiB
#include<bits/stdc++.h>
using namespace std;
const int N=(1<<20)+10;
int c[30][30],dp[N];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n,k; cin>>n >>k;
    int ans=INT_MAX;
    for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>c[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=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)]=min(dp[i^(1<<j)],dp[i]+c[j][x]);
            }
        }
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...