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 5325 Crazy Bobo(思路+dfs 记忆化)
Crazy Bobo Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Tota ...
- hdu 5325 Crazy Bobo (树形dp)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Crazy Bobo Time Limit: 6000/3000 MS (Java ...
- 2015 Multi-University Training Contest 3 hdu 5325 Crazy Bobo
Crazy Bobo Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total ...
- DFS/BFS+思维 HDOJ 5325 Crazy Bobo
题目传送门 /* 题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点 在树上的路径权值都小于这两个点 DFS/BFS+思维:按照权值的大小,从小的到大的连有 ...
- HDU 3157 Crazy Circuits(有源汇上下界最小流)
HDU 3157 Crazy Circuits 题目链接 题意:一个电路板,上面有N个接线柱(标号1~N),还有两个电源接线柱 + -.给出一些线路,每一个线路有一个下限值求一个能够让全部部件正常工作 ...
- HDOJ(HDU).2660 Accepted Necklace (DFS)
HDOJ(HDU).2660 Accepted Necklace (DFS) 点我挑战题目 题意分析 给出一些石头,这些石头都有自身的价值和重量.现在要求从这些石头中选K个石头,求出重量不超过W的这些 ...
- HDOJ(HDU).1045 Fire Net (DFS)
HDOJ(HDU).1045 Fire Net [从零开始DFS(7)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HD ...
- HDOJ(HDU).1241 Oil Deposits(DFS)
HDOJ(HDU).1241 Oil Deposits(DFS) [从零开始DFS(5)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架 ...
- HDOJ(HDU).1035 Robot Motion (DFS)
HDOJ(HDU).1035 Robot Motion [从零开始DFS(4)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DF ...
随机推荐
- java学习_5_23
Collection接口中定义的方法如下,所有继承自Collection接口的接口(List,Set)的实现类均实现了这些方法. List容器是有序.可重复的,常用的实现类:ArrayList,Lin ...
- 使用JS获取request参数
1.document.write('<%=request.getAttribute("param")%>'); 2.window.navigator.userAgent ...
- 如何快速的vue init 属于自己的vue模板?
相信很多接触过vue的小伙伴非常熟悉了,我们在开启项目之前都需要vue init webpack xx来初始化自己的项目目录.但是在实际开发中我们往往会根据公司要求或者业务的需要会对目录进行局部的调整 ...
- 右键快捷打开Git Bash here失败
右键快捷打开Git Bash here失败,提示: Error: Could not fork child process: Resource temporarily unavailable (-1) ...
- Sturts2中Action的搜索顺序
http://localhost:8080/ProjectName/path1/path2/path3/XX.action 首先会判断以/path1/paht2/path3为namespace的pac ...
- PHP 生成器Generators的入门理解和学习
什么是生成器Generators 生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存达到上限,或者会占据可观的处理时间.相反,你可以写一个生成器 ...
- Django-前后台的数据交互
Django 从后台往前台传递数据时有多种方法可以实现. 最简单的后台是这样的: from django.shortcuts import render def main_page(request): ...
- 洛谷 3833 SHOI 2012 魔法树
[题解] 树链剖分模板题.. #include<cstdio> #include<algorithm> #include<queue> #define N 5000 ...
- 数论结论 nefu 702
Given a prime p (p<108),you are to find min{x2+y2},where x and y belongs to positive integer, so ...
- 食物链 2001年NOI全国竞赛
时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond 题目描述 Description 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A吃B ...