제출 #98526

#제출 시각아이디문제언어결과실행 시간메모리
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";
}

컴파일 시 표준 에러 (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...