#include <bits/stdc++.h>
using namespace std;
using ll=long long;
#define F first
#define S second
#define sz(x) int(x.size())
const int MAX=2100;
const ll INF=1e18+5;
int f[MAX][MAX], n;
int mask, L;
vector<int> a;
void nap(int x) {
if(x>L) {
a.push_back(x-n+1);
return;
}
if(mask&(1<<(x-1))) {
nap(2*x+1);
nap(2*x);
}
else {
nap(2*x);
nap(2*x+1);
}
}
signed main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n;
if(n>16) {
return 5;
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cin >> f[i][j];
}
}
ll out=INF;
L=n-1;
for(mask=0; mask<(1<<L); mask++) {
a={};
nap(1);
ll c=0;
for(int i=1; i<n; i++) {
c+=f[a[i-1]][a[i]];
}
out=min(out, c);
}
cout << out << '\n';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |