TLE77,求助
查看原帖
TLE77,求助
697299
hamster000楼主2023/10/15 22:06
#include <bits/stdc++.h>
using namespace std;
const int maxn=105;
int r[maxn][maxn],d[maxn];
vector<int> vec[maxn];

int dfs(int u,int k){
	if(k==0) return 0;
	if(vec[u].size()==0) return 0;
	int ans=0;
	int lc=vec[u][0],rc=vec[u][1];
	for(int j=1;j<=k-1;j++){
		
		
		ans=max(ans,dfs(rc,k-j-1)+dfs(lc,j-1)+r[u][lc]+r[u][rc]);
	}
	ans=max(ans,dfs(lc,k-1)+r[u][lc]);
	ans=max(ans,dfs(rc,k-1)+r[u][rc]);
	return ans;
}
int main(){
	int n,q;
	cin >> n >> q;
	for(int i=1;i<=n;i++){
		int x,y,z;
		cin >> x >> y >> z;
		vec[x].push_back(y);
		r[x][y]=z;
		d[y]++;
	}
	int t;
	for(int i=1;i<=n;i++){
		if(d[i]==0){
			t=i;break;
		} 
	}
	cout << dfs(t,q);
}


评测记录

2023/10/15 22:06
加载中...