//    hdu 5325 Crazy Bobo
//
//    题目大意:
//
//        给你一棵树,树上每一个节点都有一个权值w,选择尽可能多的节点,
//        这些节点相互联通,而且依照权值升序排序之后得到节点编号,
//        需相邻节点之间的随意节点都要大于较小的节点。
//
//    解题思路:
//        对于每一对u,v,我们建一条这种边:权值小的像权值大的连一条边。
//        这样,问题就转化为求以u最小的权值为根的子树上点集的最大值。
//        dfs就可以。
//
//
//    感悟:
//
//        多校的一道题目,当时并没有想出来怎么做。看了看题解。然后依照
//        自己的理解敲了一边,交一发,STACK_OVERFLOW,心想怎么可能呢?
//        然后依照题解交了一发,天真的没有复制拓展栈(当时无知的我并不知道)
//        交了一发还是STACK_OVERFLOW,心里就纳闷儿了,怎么可能呢?然后云集
//        了各方的题解,发现。。。要栈拓展。由于这题数据比較大。栈的空间须要
//        非常大,所以要拓展栈。

习得了pragma这项黑客技能,只是这是c++的,g++不能够 // 我也不太懂。仅仅是会Ctrl + C 和 Ctrl + V,看来还是得多掌握掌握技能。 // 继续加油吧!

!FIGHTING #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <algorithm> #include <cstring> #include <iostream> #include <vector> using namespace std; const int MAX_N = 500009; vector<int> g[MAX_N]; int d[MAX_N]; int n; int w[MAX_N]; bool vis[MAX_N]; void dfs(int u){ vis[u] = 1; d[u] = 1; for (int i=0;i<g[u].size();i++){ int v = g[u][i]; if (!vis[v]){ dfs(v); } d[u] += d[v]; } } void print(){ for (int i=1;i<=n;i++){ printf("%d ",d[i]); } puts(""); } void input(){ for (int i=1;i<=n;i++){ scanf("%d",&w[i]); g[i].clear(); } for (int i = 1;i<n;i++){ int u,v; scanf("%d%d",&u,&v); if (w[u] < w[v]) g[u].push_back(v); else if (w[v] < w[u]) g[v].push_back(u); } memset(vis,0,sizeof(vis)); } void solve(){ for (int i=1;i<=n;i++){ if (!vis[i]){ dfs(i); } } int mx = 0; for (int i=1;i<=n;i++){ mx = max(mx,d[i]); } printf("%d\n",mx); //print(); } int main(){ //freopen("1.txt","r",stdin); while(scanf("%d",&n)!=EOF){ input(); solve(); } }

hdu 5325 Crazy Bobo dfs相关推荐

  1. HDU 3157 Crazy Circuits(有源汇上下界最小流)

    HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...

  2. POJ 3801/HDU 3157 Crazy Circuits | 有下界的最小流

    题目: POJ最近总是炸 所以还是用HDU吧http://acm.hdu.edu.cn/showproblem.php?pid=3157 题解: 题很长,但其实就是给个有源汇带下界网络流(+是源,-是 ...

  3. hdu 1298 字典树 + DFS (模拟T9文本输入)

    题意:       给你一些按键顺序,让你输出每一步中概率最大的那个单词,这里的概率计算方 法好好看看别弄错了,一开始就是因为弄错了,各种wa,比如 abc 1 ,ab 1,那么 ab 的概率就是2 ...

  4. hdu 4309 最大流 + DFS

    题意:      给以三种有向边     (1) 隧道,可以过无数人,也可以藏c个人.     (2) 路,只能过人(流量INF).     (3)古桥,如果不修理可以过1个人,修理可以过无数个人,但 ...

  5. hdu 1584蜘蛛牌(DFS)

    蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  6. HDU - 1584 蜘蛛牌(dfs+最优性剪枝)

    题目链接:点击查看 题目大意:给出10张牌,随机分布在1~10十个不同的位置,要求模拟蜘蛛纸牌的游戏规则,问移动的最短距离之和是多少 题目分析:我们可以直接dfs搜索,但需要想清楚该怎么搜索,这个题目 ...

  7. HDU - 1547 Bubble Shooter(dfs+连通块+模拟)

    题目链接:点击查看 题目大意:模拟泡泡枪游戏,问当击破指定位置的泡泡时,能有多少个泡泡同时爆炸? 题目分析:一个中规中矩的连通块问题,只不过在向四周扩散的时候需要注意的是,奇数行和偶数行的方向有点不一 ...

  8. HDU 1181 变形课(dfs)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Total Submi ...

  9. hdu 2821 Pusher (dfs)

    题意:说有一个人推箱子,每次推时他要和箱子间隔一个空格子,一个格子上有x个箱子,则这些箱子会消失一个,另外n-1个推到了相邻格子的地方. 思路:首先,遍历整个图尝试每个格子,若能开始则一直走到边界或碰 ...

最新文章

  1. Spring进行表单验证
  2. HeadFirst设计模式(四) - 工厂模式之1 - 简单工厂
  3. 拦截器 java_在Java后端如何添加拦截器
  4. When 多模态 meets 信息抽取
  5. oracle 三层嵌套查询,oracle 三层嵌套分页查询
  6. facenet 中心损失函数(center loss)详解(代码分析)含tf.gather() 和 tf.scatter_sub()函数
  7. (转)结婚那天,妈问我:坐在角落里象两个要饭模样的人是谁?
  8. 今天才知道css hack是什么
  9. Visual Studio 2012中使用GitHub
  10. 【Julia】Julia v1.5.1 更改Pkg存放位置
  11. vue项目中用Iconfont阿里巴巴矢量图标库解析失败的解决办法
  12. HSQL 中修改字段的语法
  13. ip ,子网掩码, 网关 ,主机位数,网络位数,子网数
  14. 在J.U.C多线程中,AQS维护这一个CLH同步队列,这个队列遵循着FIFO原则
  15. 南阳oj 题目10 skiing
  16. 计算机中时间服务是哪个,电脑时间不对 Windows时间服务未运行的解决办法
  17. iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
  18. 聊一聊Java中的线程中断
  19. Python日常+笔面试
  20. android 远程调试工具,【教程】搭配Android studio,如何实现app远程真机debug...

热门文章

  1. ​Arm芯片的新革命在缓缓上演
  2. Nature重大突破!将皮肤细胞直接转化成感光细胞让小鼠重见光明!
  3. 机器人产业这些领域大有可为
  4. 从火热到理性,2019年AI芯片行业发展的怎么样了?【附PPT下载】
  5. UC伯克利新机器人成果:灵活自由地使用工具
  6. 乔布斯诞辰67周年,他的这些思想仍值得我们学习
  7. 在腾讯,我的试用期总结!
  8. 从京东裸辞 2 年后,我的一些改变
  9. 全球富豪大洗牌!马斯克登顶世界首富,黄铮国内第三超马云
  10. 程序员如何打造个人品牌?