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最长链的主要内容,如果未能解决你的问题,请参考以下文章

codevs——T1814 最长链

codevs1814最长链

codevs 1814 最长链

codevs 3160 最长公共子串(SAM)

codevs 3160 最长公共子串(SAM)

[codevs2185]最长公共上升子序列