POJ 2486 第二種做法

來源:互聯網
上載者:User

原點

#include<cstring>#include<cstdio>#include"iostream"#define INF -99999999using namespace std;int d[110],next[110][110],son[110],bro[110],c[110],f[110],n,k,maxt[2][110][210],r;void Zh(int p){  f[p]=1;  for(int i=0;i<d[p];i++)    if (!f[next[p][i]])      {      bro[next[p][i]]=son[p];      son[p]=next[p][i];      Zh(next[p][i]);      }  memset(maxt,-1,sizeof(maxt));}void Inp(void){  int i,j,k;  memset(d,0,sizeof(d));  for(i=1;i<=n;i++)    scanf("%d",&c[i]);  for(i=0;i<n-1;i++)    {    scanf("%d%d",&j,&k);    next[j][d[j]++]=k;    next[k][d[k]++]=j;    }  memset(bro,0,sizeof(bro));  memset(son,0,sizeof(son));  memset(f,0,sizeof(f));  Zh(1);}int Loop(int b,int p,int m) //b==0  back to root     b==1  no need to root{  int i,mt;  if (maxt[b][p][m]!=-1)    return maxt[b][p][m];  if (!p)    return maxt[b][p][m]=0;  if (m==0)    return maxt[b][p][m]=max(Loop(b,bro[p],m),c[p]);  if (b==0)    {    mt=Loop(0,bro[p],m);    if (m>=2)      {      mt=max(mt,c[p]+Loop(0,bro[p],m-2));      mt=max(mt,c[p]+Loop(0,son[p],m-2));//還未確定選取哪一個點落腳,所以-2      }    for(i=0;i<=m-4;i++)      mt=max(mt,Loop(0,bro[p],i)+Loop(0,son[p],m-4-i)+c[p]);    return maxt[b][p][m]=mt;    }  else    {    mt=Loop(1,bro[p],m);    mt=max(mt,c[p]+Loop(1,son[p],m-1));    if (m>=2)      mt=max(mt,c[p]+Loop(1,bro[p],m-2));    for(i=0;i<=m-4;i++)      mt=max(mt,Loop(1,bro[p],i)+Loop(0,son[p],m-4-i)+c[p]);    for(i=0;i<=m-3;i++)      mt=max(mt,Loop(0,bro[p],i)+Loop(1,son[p],m-3-i)+c[p]);    return maxt[b][p][m]=mt;    }}int main(){  while(scanf("%d%d",&n,&k)!=EOF)    {    Inp();    r=Loop(1,1,k);    printf("%d\n",r);    }  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.