记搜求调
查看原帖
记搜求调
768270
__why楼主2024/9/15 12:41

rt,这是代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 25,inf = 1e9;
int n;
int g[25][25];
int dp[25][(1<<20)+5];
int dfs(int p,int vis){
	if(dp[p][vis])return dp[p][vis];
	if(vis==(1<<(n-1))-1)return 0;
	int res = inf;
	for(int i = 0;i<n;i++)if(~vis&(1<<i)){
		res = min(res,dfs(i,vis|(1<<i))+g[p][i]);
	}
	return dp[p][vis] = res;
}
int main(){
	cin>>n;
	for(int i = 0;i<n;i++){
		for(int j = 0;j<n;j++){
			cin>>g[i][j];
			g[j][i] = g[i][j];
		}
	}
	cout<<dfs(0,0);
}
2024/9/15 12:41
加载中...