?? 5.cpp
字號(hào):
#include <iostream>
using namespace std;
int max(int a,int b)
{
if(a>b)
return a;
else return b;
}
int n;
int Max=0;
bool map[1600][1600];//儲(chǔ)存點(diǎn)與點(diǎn)的連通情況
int p[1600]; //存放點(diǎn)的權(quán)值
int dp(int mf,int mn)//mf到點(diǎn)mn
{
int re=p[mn];
for(int i=0 ; i < n ; i++)
{
if(map[mn][i] == 1)
{int next = i;
if(mf==next) continue;
int dp_now = dp(mn,next);
if(dp_now>0)
re += dp_now;
}
}
Max=max(Max, re);//取最大值 ;
return re;
}
void main()
{
freopen("cut.in","r",stdin);
freopen("cut.out","w",stdout);
memset(map,0,sizeof(map));
cin>>n;
for( int i = 0 ; i < n; i ++)//讀入點(diǎn)的權(quán)值
{ int temp;
cin>>temp;
p[i] = temp;
}
for( i=0;i<n-1;i++)//讀入點(diǎn)與點(diǎn)的連通情況;
{
int x,y;
cin>>x>>y;
map[x-1][y-1] = 1;
map[y-1][x-1] = 1 ;
}
dp(0,1);//dp搜圖;
cout<<Max<<endl;//輸出最大
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -