程序地带

【树形dp】P2607 [ZJOI2008]骑士




 


将每个人讨厌的人连上一条有向边,构成了基环树森林,从每个树的环上断一条边,从两条边的点跑两次dfs,计算一下最大值加到答案里


还有就是会超int


 


代码


#include<bits/stdc++.h>
using namespace std;
const int maxn=2e6+5;
const long long inf=1e17;
int n,root,cnt,v[maxn],fa[maxn],vis[maxn],head[maxn];
long long f[maxn][2];
struct edge
{
int to,nxt;
}e[maxn];
void add(int x,int y)
{
e[++cnt].to=y;
e[cnt].nxt=head[x];
head[x]=cnt;
}
long long ans;
void dfs(int x)
{
vis[x]=1;
f[x][1]=v[x]; f[x][0]=0;
for(int i=head[x];i;i=e[i].nxt)
{
int to=e[i].to;
if(to==root)
{
f[to][1]=-inf;
continue;
}
dfs(to);
f[x][0]+=max(f[to][0],f[to][1]);
f[x][1]+=f[to][0];
}
}
void circle(int x)
{
vis[x]=1;
root=x;
while(!vis[fa[root]])
{
root=fa[root];
vis[root]=1;
}
dfs(root);
long long ans1=max(f[root][0],f[root][1]);
vis[root]=1;
root=fa[root];
dfs(root);
long long ans2=max(f[root][0],f[root][1]);
ans+=max(ans1,ans2);
}
int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
scanf("%d",&n);
int x;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&v[i],&x);
add(x,i); fa[i]=x;
}
for(int i=1;i<=n;i++)
if(!vis[i])
circle(i);
printf("%lld",ans);
return 0;
}

 


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/andyc_03/article/details/109757369

随机推荐

网络硬件的组成

网络硬件的组成计算机网络硬件系统是由计算机(主机、客户机、终端)、通信处理机(集线器、交换机、路由器)、通信线路(同轴电缆、双绞线、光纤)、信息变换设备(Modem,编码解码器)等构成。...

来朵小红花 阅读(672)

Linux编程笔记---多线程,多线程网络编程

1.线程属性typedefstruct{//线程得分离状态,当线程处于分离状态时线程结束后将由系统回收其相关资源intdetachstate;//线程调度策略intschedpolicy...

小丑快学习 阅读(339)

[leetCode]830. 较大分组的位置

[leetCode]830. 较大分组的位置

题目https://leetcode-cn.com/problems/positions-of-large-groups/一次遍历使用一个变量num记录当前分组的长度num初始值为1,如...

wuzheng228 阅读(176)

穷人变富的过程中,最大的阻碍是什么?

我现在也是个穷人,对于过去穷了这么多年,对此深有体会。我来说说我都身心感受吧。最大的障碍就是你想要变富,当欲望过于急迫,而结果又相差甚远的时候&...

hzcya911 阅读(269)

通用软件快速开发平台对企业信息化的影响

通用软件快速开发平台对企业信息化的影响

关于开发平台开发平台是指以某种编程语言或者某几种编程语言为基础,开发出来的一个软件,而这软件不是一个最终的软件产品,它是一个包含了各种基础组件的二次开发软件框...

小伙子搞事情 阅读(668)

jvm垃圾回收机制_秒懂JVM的垃圾回收机制

jvm垃圾回收机制_秒懂JVM的垃圾回收机制

前言阅读过王子之前JVM文章的小伙伴们,应该已经对JVM的内存分布情况有了一个清晰的认识了,今天我们就接着来聊聊JVM的垃圾回收机制,让小伙伴们轻松理解JVM...

weixin_39683172 阅读(338)