Submission #98526

#TimeUsernameProblemLanguageResultExecution timeMemory
98526samsKronican (COCI16_kronican)C++14
0 / 100
11 ms8704 KiB
#include <bits/stdc++.h> using namespace std; const int maxmask = (1<<20)+10, inf = 2e6+10; int n, k, m[30][30]; int dp[maxmask]; int solve(int mask, int qtd){ if(dp[mask] != -1) return dp[mask]; if(qtd > k) return 0; int ans=1e9; for(int i = 1; i<=n;++i){ if(mask&(1<<i)==true) continue; for(int j = 1 ; j <= n ; ++j){ if(mask&(1<<j)==true) continue; if(i==j) continue; ans = min(ans, m[i][j]+solve(mask|(1<<i), qtd+1)); } } return dp[mask]=ans; } int main(){ cin >> n >> k; for(int i=1;i<=n;++i) for(int j=1;j<=n;++j) cin >> m[i][j]; memset(dp, -1, sizeof dp); k=n-k; cout << solve(0, 0) << "\n"; }

Compilation message (stderr)

kronican.cpp: In function 'int solve(int, int)':
kronican.cpp:17:17: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
   if(mask&(1<<i)==true) continue;
           ~~~~~~^~~~~~
kronican.cpp:20:18: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
    if(mask&(1<<j)==true) continue;
            ~~~~~~^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...