codevs 1814 最长链

二次联通门 : codevs 1814 最长链

/*
    codevs 1814 最长链

    树形DP
    当前点(LQZ)的最大价值由他的
        左儿子(HKD) 和 右儿子(SYL)的最大价值转移而来

    其余细节乱搞一下就可

    我还是水的很开心啦..

*/
#include <cstdio>

#define Max 100080

inline int max (int a, int b)
{
    return a > b ? a : b;
}

void read (int &now)
{
    now = 0;
    register char word = getchar ();
    while (word > ‘9‘ || word < ‘0‘)
        word = getchar ();
    while (word >= ‘0‘ && word <= ‘9‘)
    {
        now = now * 10 + word - ‘0‘;
        word = getchar ();
    }
}

struct Tree_Type
{
    int Left_Child;
    int Right_Child;
};

Tree_Type tree[Max];

int dp[Max];
int number[Max];
int Answer;

void Dfs (int now)
{
    dp[now] = 1;
    if (tree[now].Left_Child == 0 && tree[now].Right_Child == 0)
        return ;
    if (tree[now].Left_Child)
        Dfs (tree[now].Left_Child);
    if (tree[now].Right_Child)
        Dfs (tree[now].Right_Child);
    dp[now] = max (dp[tree[now].Left_Child], dp[tree[now].Right_Child]) + 1;
    Answer = max (Answer, dp[tree[now].Left_Child] + dp[tree[now].Right_Child] + 1);
}

int N;

int main (int argc, char *argv[])
{
    read (N);
    int x, y;
    for (register int i = 1; i <= N; i++)
    {
        read (x);
        read (y);
        tree[i].Left_Child = x;
        tree[i].Right_Child = y;
    }
    Dfs (1);
    printf ("%d", Answer - 1);
    return 0;
}
时间: 2024-08-05 19:11:54

codevs 1814 最长链的相关文章

树形DP codevs 1814 最长链

codevs 1814 最长链 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题目描述 Description 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. 输入描述 Input Description 输入的第1行为包含了一个正整数N,为这棵二叉树的结点数,结点标号由1至N. 接下来N行,这N行中的第i行包含两个正整数l[i], r[i],表示了结点i的左儿子与右儿子编号.如果l[i]为0,表示结点i没有左儿

codevs——1814 最长链

1814 最长链 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. 输入描述 Input Description 输入的第1行为包含了一个正整数N,为这棵二叉树的结点数,结点标号由1至N. 接下来N行,这N行中的第i行包含两个正整数l[i], r[i],表示了结点i的左儿子与右儿子编号.如果l[i]为0,表示结点i没有左儿子,同样

1814 最长链

1814 最长链 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. 输入描述 Input Description 输入的第1行为包含了一个正整数N,为这棵二叉树的结点数,结点标号由1至N. 接下来N行,这N行中的第i行包含两个正整数l[i], r[i],表示了结点i的左儿子与右儿子编号.如果l[i]为0,表示结点i没有左儿子,同样

codevs——T1814 最长链

http://codevs.cn/problem/1814/ 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. 输入描述 Input Description 输入的第1行为包含了一个正整数N,为这棵二叉树的结点数,结点标号由1至N. 接下来N行,这N行中的第i行包含两个正整数l[i], r[i],表示了结点i的左儿子

最长链(codevs 1814)

题目描述 Description 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. 输入描述 Input Description 输入的第1行为包含了一个正整数N,为这棵二叉树的结点数,结点标号由1至N. 接下来N行,这N行中的第i行包含两个正整数l[i], r[i],表示了结点i的左儿子与右儿子编号.如果l[i]为0,表示结点i没有左儿子,同样地,如果r[i]为0则表示没有右儿子. 输出描述 Output Description 输出包括1个正整数,为这

最长链

最长链 题目描述 现给出一棵N个结点二叉树,问这棵二叉树中最长链的长度为多少,保证了1号结点为二叉树的根. 输入描述 输入的第1行为包含了一个正整数N,为这棵二叉树的结点数,结点标号由1至N. 接下来N行,这N行中的第i行包含两个正整数l[i], r[i],表示了结点i的左儿子与右儿子编号.如果l[i]为0,表示结点i没有左儿子,同样地,如果r[i]为0则表示没有右儿子. 输出描述 输出包括1个正整数,为这棵二叉树的最长链长度. 样例输入 5 2 3 4 5 0 6 0 0 0 0 样例输出 4

SPOJ LIS2 Another Longest Increasing Subsequence Problem 三维偏序最长链 CDQ分治

Another Longest Increasing Subsequence Problem Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=19929 Description Given a sequence of N pairs of integers, find the length of the longest incre

长链剖分随想

之前写了那么长一篇Blog-现在不如写篇小短文-说一下另一种树链剖分方法--长链剖分的事情.它可以比重链剖分更快地完成一些东西. 树链剖分的原始版本重链剖分非常经典,这里就不从头介绍了. 原本的剖分方法是按照子树大小剖分,与子树点数最多的儿子连成链,所以叫做重链剖分-然后显然就有一个点到根的路径上至多$O(\log n)$条轻边这个性质(因为沿着轻边走,每次子树大小一定小于父亲的一半).有了这个性质就可以做各种路径相关的查询,暴力每次跳到重链开头就好- 而在一些问题里,有这么一种奇妙的剖分方式可

长链非编码RNA(lncRNA)

长链非编码RNA(lncRNA) 转自:http://blog.sina.com.cn/s/blog_909da11301010bkz.html     长链非编码RNA(lncRNA)是一类转录本长度超过200nt的RNA分子,它们并不编码蛋白,而是以RNA的形式在多种层面上(表观遗传调控.转录调控以及转录后调控等)调控基因的表达水平. lncRNA起初被认为是基因组转录的“噪音”,是RNA聚合酶II转录的副产物,不具有生物学功能.然而,近年来的研究表明,lncRNA参与了X染色体沉默,基因组