牛妹的野菜(DP)
思路: 。
因为题目限制边是从编号小到编号打的,所以可以从小到大 。
不知道为什么直接在图上跑 就只能过 的数据。
#define pb push_back
class Solution {
public:
string digSum(vector<int>& a, vector<vector<int> >& b) {
int n=a.size();
vector<int>pre(n+1,-1),dp(n+1,0);
vector<vector<int> >e(n+1);
for(auto v:b)
e[v[0]].pb(v[1]);
int pos=1;
for(int i=1;i<=n;i++){
dp[i]+=a[i-1];
if(dp[pos]<dp[i]) pos=i;
for(auto v:e[i]){
if(dp[v]<dp[i]) dp[v]=dp[i],pre[v]=i;
}
}
string ans;
ans+=to_string(pos);
pos=pre[pos];
while(~pos){
ans=to_string(pos)+'-'+ans;
pos=pre[pos];
}
return ans;
}
};