The more, The Better

來源:互聯網
上載者:User

給你一棵樹,欲取子節點,必取父節點。問取的價值最多為多少。

簡單樹形背包,直接貼代碼。

#include<iostream>#include<vector>#include<stdio.h>using namespace std;#define Maxn 300vector<int> e[Maxn];int A[Maxn],B[Maxn];int dp[Maxn][Maxn],vis[Maxn];int ans;int n,m,cur[Maxn];void dfs(int u){int i,j,k;vis[u]=1;dp[u][1]=B[u];for(i=0;i<e[u].size();i++){ int v=e[u][i]; if(vis[v]) continue; dfs(v);// cout<<u<<" "<<v<<endl;     for(j=m+1;j>0;j--){     for(k=1;k<j;k++)     dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]);}}}int main(){int i,j;while(scanf("%d%d",&n,&m)){if(!n&&!m) break;int  tt=0;for(i=0;i<Maxn;i++)e[i].clear();for(i=1;i<=n;i++){scanf("%d%d",&A[i],&B[i]); e[A[i]].push_back(i);}memset(vis,0,sizeof(vis));memset(dp,0,sizeof(dp));B[0]=0;dfs(0);printf("%d\n",dp[0][m+1]); }return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.