社区讨论
求解答
P1352没有上司的舞会参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo15t4mv
- 此快照首次捕获于
- 2023/10/22 15:40 2 年前
- 此快照最后确认于
- 2023/11/02 15:15 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,tot;
vector < int > s[6010];
int v[6010],f[6010][2];
int kl[6010];
int l,k;
void dp(int x)
{
f[x][0]=0;
f[x][1]=kl[x];
for(int i=0;i<s[x].size();++i)
{
int y=s[x][i];
dp(y);
f[x][0]+=max(f[y][0],f[y][1]);
f[x][1]+=f[y][0];
}
return;
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
cin>>kl[i];
for(int i=1;i<n;++i)
{
cin>>l>>k;
v[l]=1;
s[k].push_back(l);
}
int g;
for(int i=1;i<=n;++i)
{
if(!v[i])
{
g=i;
break;
}
}
dp(g);
cout<<max(f[g][0],f[g][1]);
return 0;
}
我一直没明白这里的f数组为什么要开二维,感觉一维也行
回复
共 2 条回复,欢迎继续交流。
正在加载回复...