社区讨论
60分求助orz
P1352没有上司的舞会参与者 2已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mi7z46wp
- 此快照首次捕获于
- 2025/11/21 05:58 4 个月前
- 此快照最后确认于
- 2025/11/21 05:58 4 个月前
CPP
#include<cstdio>
#include<iostream>
int n,r[6010],first[6010]={0},ans,root,rudu[6010];
struct edge{
int v,next;
}e[6010];
int cnt=0;
inline void addedge(int u,int v){
e[++cnt].v=v;e[cnt].next=first[u];first[u]=cnt;
}
int max(int x,int y){
return x>y?x:y;
}
int f[6010][2];
void dp(int x){
f[x][0]=0;
f[x][1]=r[x];
for(int i=first[x];i;i=e[i].next){
int v=e[x].v;
dp(v);
f[x][0]+=max(f[v][0],f[v][1]);
f[x][1]+=f[v][0];
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&r[i]);
}
int l,k;
for(int i=1;i<n;i++){
scanf("%d%d",&l,&k);
addedge(k,l);
rudu[l]=1;
}
for(int i=1;i<=n;i++){
if(!rudu[i]){
root=i;break;
}
}
dp(root);
printf("%d",max(f[root][0],f[root][1]));
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...