不开02, #9 tle,请问哪里可以优化?
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
vector<int>edge[65];
int cost[65], val[65];
int dp[65][40005];
int m,n;
void dfs(int u){
for(int v : edge[u]){
dfs(v);
for(int j = n; j >= 0; j--){
for(int k = j; k >= cost[v]; k--){
dp[u][j] = max(dp[u][j], dp[u][j-k] + dp[v][k - cost[v]] + val[v]);
}
}
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin>>n>>m;
n /= 10;
for(int i = 0; i <= m; i++) edge[i].clear();
for(int i = 1; i <= m; i++){
int c,v,k;
cin>>c>>v>>k;
cost[i] = c/10;
val[i] = v*c;
edge[k].emplace_back(i);
}
dfs(0);
cout<<dp[0][n]<<endl;
return 0;
}