80分求调
查看原帖
80分求调
1286930
LYQqwq楼主2025/2/6 16:36
#include<bits/stdc++.h>
using namespace std;
int n,mp[16][16],vis[16],ans=10000;
void dfs(int dep,int dis,int last){
    if(dep>n){
        ans=min(ans,dis+mp[last][1]);
        return ;
    }
    else{
        for(int i=2;i<=n;i++){
            if(vis[i]==0&&dis+mp[last][i]<ans){
                vis[i]=1;
                dfs(dep+1,dis+mp[last][i],i);
                vis[i]=0;
            }
        }
    }
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            cin>>mp[i][j];
        }
    }
    vis[1]=1;
    dfs(2,0,1);
    cout<<ans;
    return 0;
}
2025/2/6 16:36
加载中...