Description:
Accept:
#include<bits/stdc++.h>
using namespace std;
int n, a[20][20], sum = INT_MAX, vis[20], nowtime = 0;
void dfs(int now) {
if (now == n + 1) {
sum = min(sum, nowtime);
return;
}
if (nowtime > sum) {
return;
}
for (int i = 1; i <= n; i++) {
if (vis[i]) {
continue;
}
vis[i] = true;
nowtime += a[now][i];
dfs(now + 1);
nowtime -= a[now][i];
vis[i] = false;
}
}
int main()
{
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
}
}
memset(vis, 0, sizeof(vis));
dfs(1);
cout << sum << endl;
return 0;
}