Submission #447319

#TimeUsernameProblemLanguageResultExecution timeMemory
447319LptN21Kronican (COCI16_kronican)C++14
100 / 100
786 ms4336 KiB
#include <bits/stdc++.h> using namespace std; #define fastIO ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL); #define FF first #define SS second #define pb push_back #define sz(x) (int)x.size() #define PI acos(-1.0) #define lb lower_bound #define ub upper_bound #define all(a) (a).begin(), (a).end() #define odd(x) __builtin_parity((int)x) #define cntbit(x) __builtin_popcount(x) typedef long long ll; typedef pair<int, int> ii; const int N = 20+1, M=20; const int MOD = 998244353; const int oo = 1e9; int n, m, k, t; const int MASK=(1<<M)-1; int a[N][N], _dp[MASK+1]; signed main() { //freopen("test.inp", "r", stdin); //freopen("test.out", "w", stdout); //fastIO; scanf("%d%d", &n, &m); int mask=(1<<n)-1; for(int i=0;i<n;i++) for(int j=0;j<n;j++) scanf("%d", &a[i][j]); for(int i=1;i<=mask;i++) { _dp[i]=oo; if(cntbit(i)==m) {_dp[i]=0; continue;} for(int j=0;j<n;j++) if(i&(1<<j)) for(int k=0;k<n;k++) if(j!=k&&i&(1<<k)) _dp[i]=min(_dp[i], _dp[i^(1<<j)]+a[j][k]); } printf("%d", _dp[(1<<n)-1]); return 0; } /* stuff you should look for - int overflow, array bounds - special cases (n=1?) - do smth instead of do nothing and stay organized - WRITE STUFF DOWN - DONT JUST STICK ON ONE APPROACH */

Compilation message (stderr)

kronican.cpp: In function 'int main()':
kronican.cpp:30:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   30 |     scanf("%d%d", &n, &m); int mask=(1<<n)-1;
      |     ~~~~~^~~~~~~~~~~~~~~~
kronican.cpp:32:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   32 |         scanf("%d", &a[i][j]);
      |         ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...