#include<bits/stdc++.h>
using namespace std;
#define int long long
const int inf=2e7+10;
int n,vis[20],dis[20][20],ans=inf,sum;
void dfs(int now,int step){
int flag=0;
if(step==n-1){
if(sum<ans){
ans=sum;
}
return;
}
for(int i=1;i<=n;i++){
if(dis[now][i]!=0&&!vis[i]){
if(sum+dis[now][i]>ans)continue;
if(i==n&&step!=n-2)continue;
sum+=dis[now][i];
vis[i]=1;
dfs(i,step+1);
vis[i]=0;
sum-=dis[now][i];
}
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
vis[1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>dis[i][j];
}
}
dfs(1,0);
cout<<ans;
return 0;
}
using namespace std;
#define int long long
const int inf=2e7+10;
int n,vis[20],dis[20][20],ans=inf,sum;
void dfs(int now,int step){
int flag=0;
if(step==n-1){
if(sum<ans){
ans=sum;
}
return;
}
for(int i=1;i<=n;i++){
if(dis[now][i]!=0&&!vis[i]){
if(sum+dis[now][i]>ans)continue;
if(i==n&&step!=n-2)continue;
sum+=dis[now][i];
vis[i]=1;
dfs(i,step+1);
vis[i]=0;
sum-=dis[now][i];
}
}
}
signed main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n;
vis[1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>dis[i][j];
}
}
dfs(1,0);
cout<<ans;
return 0;
}
0 回复
0 转发
0 喜欢
6 阅读



