求助22pts
查看原帖
求助22pts
1404345
zzx20110203楼主2024/12/5 20:13
#include<bits/stdc++.h>
using namespace std;
struct jk{
	int u,k;
};
int n,m;
vector<jk>ve[20];
int book[20][1<<20];
int dfs(int now,int sum){
	if(now==n-1){
		return 0;
	}
	if(book[now][sum]!=-1e9){
		return book[now][sum];
	}
	int len=ve[now].size();
	for(int i=0;i<len;i++){
		if(sum&(1<<ve[now][i].u)){
			continue;
		}
		book[now][sum]=max(dfs(ve[now][i].u,sum+(1<<ve[now][i].u))+ve[now][i].k,book[now][sum+(1<<ve[now][i].u)]);
	}
	return book[now][sum];
}
int main(){
	for(int i=0;i<=19;i++){
		for(int j=0;j<=(1<<19);j++){
			book[i][j]=-1e9;
		}
	}
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int s,d,l;
		cin>>s>>d>>l;
		ve[s].push_back(jk{d,l});
	}
	cout<<dfs(0,1);
	return 0;
}

记录

2024/12/5 20:13
加载中...