結果

提出番号 1593
提出者 ecasdqina
言語 C++
提出日時 2018-08-04 13:13:53
問題名 (70)アルゴリズムのお勉強
結果 TLE
点数 0%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 WA 0% 5ms 8400KB
2 WA 0% 2ms 7472KB
3 WA 0% 5ms 8016KB
4 WA 0% 2ms 7552KB
5 WA 0% 2ms 7632KB
6 WA 0% 1012ms 8096KB
7 WA 0% 5ms 8112KB
8 AC 100% 2ms 8448KB
9 WA 0% 2ms 7840KB
10 WA 0% 5ms 8416KB
11 TLE 0% 20002ms 0KB
12 TLE 0% 20002ms 0KB
13 TLE 0% 20001ms 0KB
14 TLE 0% 20002ms 0KB
15 TLE 0% 20001ms 0KB
16 WA 0% 59ms 8048KB
17 WA 0% 4ms 8400KB
18 WA 0% 5ms 7552KB
19 TLE 0% 20002ms 0KB
20 TLE 0% 20002ms 0KB
21 WA 0% 55ms 7248KB
22 TLE 0% 20001ms 0KB
23 WA 0% 1184ms 7824KB
24 TLE 0% 20001ms 0KB
25 TLE 0% 20002ms 0KB
26 TLE 0% 20002ms 0KB
27 TLE 0% 20002ms 0KB
28 TLE 0% 20002ms 0KB
29 TLE 0% 20002ms 0KB
30 TLE 0% 20001ms 0KB

ソースコード

#include <bits/stdc++.h>
typedef long long ll;
using std::cout;
using std::endl;
using std::cin;

int n;
std::vector<int> a;
std::vector<std::vector<int>> li;

int dfs(std::vector<int> vec = std::vector<int>(0)) {
	if(vec.size() == n) {
		int ret = 0;
		for(int i = 0; i < n; i++) {
			ret += a[i];
			
			for(int j = 0; j < i; j++) {
				ret -= li[vec[j]][i];
			}
		}
		
		return ret;
	}
	
	int mi = 1e9;
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < vec.size(); j++) if(vec[j] == i) continue;
		vec.push_back(i);
		mi = std::min(mi, dfs(vec));
		vec.pop_back();
	}
	
	return mi;
}

int main(){
	cin >> n; a.resize(n); li.resize(n, std::vector<int>(n));
	for(int i = 0; i < n; i++) cin >> a[i];
	for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) cin >> li[i][j];
	
	cout << dfs() << endl;
	return 0;
}