제출 #317320

#제출 시각아이디문제언어결과실행 시간메모리
317320fadi57Kronican (COCI16_kronican)C++14
100 / 100
1435 ms8704 KiB
#include <bits/stdc++.h> using namespace std; const long long mx=21; const long long mod=1e9+7; typedef long long ll; int a[mx][mx]; int dp[1<<mx];int k;int n,m; int solve(int mask){ if (__builtin_popcount(mask) == k) return 0; int &ret=dp[mask]; if(ret!=-1){return ret;} ret=1<<30; for(int i=0;i<n;i++){ if(!(mask&(1<<i))){continue;} for(int j=0;j<n;j++){ if(i==j){continue;} if(!(mask&(1<<j))){continue;} ret=min(ret,solve(mask^(1<<i))+a[i][j]); } } return ret; } int main() { memset(dp,-1,sizeof(dp)); cin>>n>>k; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>a[i][j];//cout<<a[i][j]; } } cout<<solve((1<<n)-1); }
#Verdict Execution timeMemoryGrader output
Fetching results...