二叉蘋果樹

來源:互聯網
上載者:User

標籤:ons   int   size   mes   max   string   main   nbsp   break   

 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 const int maxn=107; 6 int map[maxn][maxn],l[maxn],r[maxn],a[maxn],f[maxn][maxn]; 7 int n,q; 8 void buildtree(int u){ 9     for(int i=1;i<=n;i++){10         if(map[u][i]!=-1){11             l[u]=i;a[i]=map[u][i];12             map[u][i]=-1;map[i][u]=-1;13             buildtree(i);14             break;15         }16     }17     for(int i=1;i<=n;i++){18         if(map[u][i]!=-1){19             r[u]=i;a[i]=map[u][i];20             map[u][i]=-1;map[i][u]=-1;21             buildtree(i);22             break;23         }24     }25 }26 int DP(int i,int j){27     if(j==0) return f[i][j]=0;28     if(l[i]==0&&r[i]==0) return f[i][j]=a[i];29     if(f[i][j]>0) return f[i][j];30     for(int k=0;k<=j-1;k++)31         f[i][j]=max(f[i][j],DP(l[i],k)+DP(r[i],j-k-1)+a[i]);32     return f[i][j];33 } 34 int main(){35     cin>>n>>q;36     memset(map,-1,sizeof(map));37     for(int i=1;i<n;i++){38         int u,v,w;cin>>u>>v>>w;39         map[u][v]=w;map[v][u]=w;40     } 41     buildtree(1);42     int ans=DP(1,q+1);43     cout<<ans<<endl;44     return 0;45 } 

 

二叉蘋果樹

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.