codevs1814最长链
Posted 那一抹落日的橙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codevs1814最长链相关的知识,希望对你有一定的参考价值。
本来是去找最小生成树的题目的,在codevs搜索一番,打开了它,结果……这和最小生成树有啥关系啊qwq,这个题就是个树形dp啊qwq
#include<iostream> #include<cstring> #include<cstdio> using namespace std; struct in { int l,r; }ter[100010]; int n,x,y,tail,ans,head[100010],dp[100010]; void dfs(int ro) { if(ter[ro].l==0&&ter[ro].r==0)//如果没有蛾子直接返回 return; if(ter[ro].l)//有左蛾子就向左跑 dfs(ter[ro].l); if(ter[ro].r)//有右蛾子向右跑 dfs(ter[ro].r); dp[ro]=max(dp[ter[ro].l],dp[ter[ro].r])+1;//选取经过这个点的链最大值 int tot=0; if(ter[ro].l) tot+=dp[ter[ro].l]+1; if(ter[ro].r) tot+=dp[ter[ro].r]+1; ans=max(ans,tot);//因为树上最长链不一定经过根节点,真·套路 } int main() { scanf("%d",&n); memset(head,-1,sizeof(head)); for(int i=1;i<=n;i++) scanf("%d%d",&x,&y),ter[i].l=x,ter[i].r=y;//建图 dfs(1); printf("%d",ans); }//恕我直言,这个题和最小生成树有关系吗qwq
以上是关于codevs1814最长链的主要内容,如果未能解决你的问题,请参考以下文章