#include <bits/stdc++.h>
using namespace std;
const int N=20;
int n,ans=1e9;
int g[N][N];
int st[N],a[N]; //a[]表示当前第n个到达的岛屿的编号
//当前按顺序到达了第x个岛屿,累计的时间
void dfs(int x,int sum){
if(sum>ans) return;
if(x==n-1){
ans=min(ans,sum+g[a[x]][n]);
//cout<<ans<<endl;
return;
}
for(int i=1;i<n;i++){
if(!st[i]){
st[i]=1;
a[x+1]=i;
dfs(x+1,sum+g[a[x]][i]);
st[i]=0;
a[x+1]=0;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>g[i][j];
}
}
st[1]=1;
a[1]=1;
dfs(1,0);
cout<<ans<<endl;
return 0;
}
0 回复
0 转发
0 喜欢
6 阅读



