zoukankan      html  css  js  c++  java
  • HDU 5325 Crazy Bobo(思路+dfs 记忆化)

    Crazy Bobo

    Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)
    Total Submission(s): 612    Accepted Submission(s): 189


    Problem Description
    Bobo has a tree,whose vertices are conveniently labeled by 1,2,...,n.Each node has a weight wi. All the weights are distrinct.
    A set with m nodes v1,v2,...,vm is a Bobo Set if:
    - The subgraph of his tree induced by this set is connected.
    - After we sort these nodes in set by their weights in ascending order,we get u1,u2,...,um,(that is,wui<wui+1 for i from 1 to m-1).For any node x in the path from ui to ui+1(excluding ui and ui+1),should satisfy wx<wui.
    Your task is to find the maximum size of Bobo Set in a given tree.
     

    Input
    The input consists of several tests. For each tests:
    The first line contains a integer n (1n500000). Then following a line contains n integers w1,w2,...,wn (1wi109,all the wi is distrinct).Each of the following n-1 lines contain 2 integers ai and bi,denoting an edge between vertices ai and bi (1ai,bin).
    The sum of n is not bigger than 800000.
     

    Output
    For each test output one line contains a integer,denoting the maximum size of Bobo Set.
     

    Sample Input
    7 3 30 350 100 200 300 400 1 2 2 3 3 4 4 5 5 6 6 7
     

    Sample Output
    5
     

    Source
     

    Recommend
    wange2014   |   We have carefully selected several similar problems for you:  5326 5324 5323 5322 5321 
     


    /*
    
    參考此人博客 :http://www.mamicode.com/info-detail-948802.html
    记得用c++交
    
    */
    
    
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    #include<string>
    #include<iostream>
    #include<queue>
    #include<cmath>
    #include<map>
    using namespace std;
    
    #define N 800005
    
    vector<int>g[N];
    int n;
    int ans[N];
    int a[N];
    
    int dfs(int u)
    {
        if(ans[u]) return ans[u];
        ans[u]=1;
        for(int i=0;i<g[u].size();i++)
        {
            int to=g[u][i];
            ans[u]+=dfs(to);
        }
        return ans[u];
    }
    
    int main()
    {
        int i,j;
        while(~scanf("%d",&n))
        {
            for(i=1;i<=n;i++)
                scanf("%d",&a[i]);
            for(i=1;i<=n;i++)
                g[i].clear();
            memset(ans,0,sizeof(ans));
            int u,v;
            i=n-1;
            while(i--)
            {
                scanf("%d%d",&u,&v);
                if(a[u]<a[v]) g[u].push_back(v);
                else g[v].push_back(u);
            }
            int temp=0;
            for(i=1;i<=n;i++)
            {
                temp=max(temp,dfs(i));
            }
            printf("%d
    ",temp);
        }
        return 0;
    }
    


  • 相关阅读:
    Maven 集成Tomcat插件
    dubbo 序列化 问题 属性值 丢失 ArrayList 解决
    docker 中安装 FastDFS 总结
    docker 从容器中拷文件到宿主机器中
    db2 相关命令
    Webphere WAS 启动
    CKEDITOR 4.6.X 版本 插件 弹出对话框 Dialog中 表格 Table 自定义样式Style 问题
    SpringMVC JSONP JSON支持
    CKEDITOR 3.4.2中 按钮事件中 动态改变图标和title 获取按钮
    git回退到远程某个版本
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/6940097.html
Copyright © 2011-2022 走看看