hdu 5325 Crazy Bobo dfs
// 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相关推荐
- HDU 3157 Crazy Circuits(有源汇上下界最小流)
HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...
- POJ 3801/HDU 3157 Crazy Circuits | 有下界的最小流
题目: POJ最近总是炸 所以还是用HDU吧http://acm.hdu.edu.cn/showproblem.php?pid=3157 题解: 题很长,但其实就是给个有源汇带下界网络流(+是源,-是 ...
- hdu 1298 字典树 + DFS (模拟T9文本输入)
题意: 给你一些按键顺序,让你输出每一步中概率最大的那个单词,这里的概率计算方 法好好看看别弄错了,一开始就是因为弄错了,各种wa,比如 abc 1 ,ab 1,那么 ab 的概率就是2 ...
- hdu 4309 最大流 + DFS
题意: 给以三种有向边 (1) 隧道,可以过无数人,也可以藏c个人. (2) 路,只能过人(流量INF). (3)古桥,如果不修理可以过1个人,修理可以过无数个人,但 ...
- hdu 1584蜘蛛牌(DFS)
蜘蛛牌 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU - 1584 蜘蛛牌(dfs+最优性剪枝)
题目链接:点击查看 题目大意:给出10张牌,随机分布在1~10十个不同的位置,要求模拟蜘蛛纸牌的游戏规则,问移动的最短距离之和是多少 题目分析:我们可以直接dfs搜索,但需要想清楚该怎么搜索,这个题目 ...
- HDU - 1547 Bubble Shooter(dfs+连通块+模拟)
题目链接:点击查看 题目大意:模拟泡泡枪游戏,问当击破指定位置的泡泡时,能有多少个泡泡同时爆炸? 题目分析:一个中规中矩的连通块问题,只不过在向四周扩散的时候需要注意的是,奇数行和偶数行的方向有点不一 ...
- HDU 1181 变形课(dfs)
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submi ...
- hdu 2821 Pusher (dfs)
题意:说有一个人推箱子,每次推时他要和箱子间隔一个空格子,一个格子上有x个箱子,则这些箱子会消失一个,另外n-1个推到了相邻格子的地方. 思路:首先,遍历整个图尝试每个格子,若能开始则一直走到边界或碰 ...
最新文章
- Spring进行表单验证
- HeadFirst设计模式(四) - 工厂模式之1 - 简单工厂
- 拦截器 java_在Java后端如何添加拦截器
- When 多模态 meets 信息抽取
- oracle 三层嵌套查询,oracle 三层嵌套分页查询
- facenet 中心损失函数(center loss)详解(代码分析)含tf.gather() 和 tf.scatter_sub()函数
- (转)结婚那天,妈问我:坐在角落里象两个要饭模样的人是谁?
- 今天才知道css hack是什么
- Visual Studio 2012中使用GitHub
- 【Julia】Julia v1.5.1 更改Pkg存放位置
- vue项目中用Iconfont阿里巴巴矢量图标库解析失败的解决办法
- HSQL 中修改字段的语法
- ip ,子网掩码, 网关 ,主机位数,网络位数,子网数
- 在J.U.C多线程中,AQS维护这一个CLH同步队列,这个队列遵循着FIFO原则
- 南阳oj 题目10 skiing
- 计算机中时间服务是哪个,电脑时间不对 Windows时间服务未运行的解决办法
- iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
- 聊一聊Java中的线程中断
- Python日常+笔面试
- android 远程调试工具,【教程】搭配Android studio,如何实现app远程真机debug...