记录编号 | 199626 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | 火车站饭店 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.933 s | ||
提交时间 | 2015-10-27 07:12:45 | 内存使用 | 19.04 MiB | ||
#include<cstdio> #include<deque> using namespace std; const int SIZEN=100010; int N; int f[SIZEN][2]={0},cost[SIZEN]; bool visit[SIZEN]={0}; deque<int> s[SIZEN]; void read() { scanf("%d",&N); for(int i=1;i<=N;i++) scanf("%d",&cost[i]); for(int i=1;i<N;i++) { int fr,to; scanf("%d%d",&fr,&to); s[fr].push_back(to); s[to].push_back(fr); } } void DP(int x) { visit[x]=1; for(int i=0;i<s[x].size();i++) { int v=s[x][i]; if(!visit[v]) { DP(v); f[x][0]+=max(f[v][0],f[v][1]); f[x][1]+=f[v][0]; } } f[x][1]+=cost[x]; } void work() { DP(1); int ans=max(f[1][0],f[1][1]); printf("%d",ans); } int main() { freopen("profitz.in","r",stdin); freopen("profitz.out","w",stdout); read(); work(); return 0; }