返回题解分享
讨论 / 题解分享/ 帖子详情

海贼王之伟大航路 - 题解

#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;
}
0 回复 0 转发 0 喜欢 5 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!