DFS/BFS+思维 HDOJ 5325 Crazy Bobo
/*
题意:给一个树,节点上有权值,问最多能找出多少个点满足在树上是连通的并且按照权值排序后相邻的点
在树上的路径权值都小于这两个点
DFS/BFS+思维:按照权值的大小,从小的到大的连有向边,搜索最多连接点数即是答案。因为排序后,他们之间的路径,
可定都是从当前节点u连过去的,那么都是小于这两个节点的。DFS需手动加栈,BFS类似拓扑排序的思路
*/
#pragma comment (linker, "/STACK:1024000000,1024000000")
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std; const int MAXN = 5e5 + ;
const int INF = 0x3f3f3f3f;
int w[MAXN];
int cnt[MAXN];
vector<int> G[MAXN];
int n; void DFS(int u) {
cnt[u] = ;
for (int i=; i<G[u].size (); ++i) {
int v = G[u][i];
if (!cnt[v]) DFS (v);
cnt[u] += cnt[v];
}
} int main(void) { //HDOJ 5325 Crazy Bobo
//freopen ("J.in", "r", stdin); while (scanf ("%d", &n) == ) {
for (int i=; i<=n; ++i) scanf ("%d", &w[i]);
for (int i=; i<=n; ++i) G[i].clear ();
for (int i=; i<=n-; ++i) {
int u, v; scanf ("%d%d", &u, &v);
if (w[u] < w[v]) G[u].push_back (v);
else G[v].push_back (u);
}
memset (cnt, , sizeof (cnt));
for (int i=; i<=n; ++i) {
if (cnt[i]) continue;
DFS (i);
}
int ans = ;
for (int i=; i<=n; ++i) ans = max (ans, cnt[i]);
printf ("%d\n", ans);
} return ;
}
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std; const int MAXN = 5e5 + ;
const int INF = 0x3f3f3f3f;
int w[MAXN];
int cnt[MAXN];
int deg[MAXN];
vector<int> G[MAXN];
int n; int BFS(void) {
queue<int> Q; int ret = ;
for (int i=; i<=n; ++i) cnt[i] = ;
for (int i=; i<=n; ++i) {
if (!deg[i]) Q.push (i);
}
while (!Q.empty ()) {
int u = Q.front (); Q.pop ();
ret = max (ret, cnt[u]);
for (int i=; i<G[u].size (); ++i) {
int v = G[u][i];
cnt[v] += cnt[u];
if (!(--deg[v])) Q.push (v);
}
}
return ret;
} int main(void) {
//freopen ("J.in", "r", stdin); while (scanf ("%d", &n) == ) {
for (int i=; i<=n; ++i) scanf ("%d", &w[i]);
for (int i=; i<=n; ++i) G[i].clear ();
memset (deg, , sizeof (deg));
for (int i=; i<=n-; ++i) {
int u, v; scanf ("%d%d", &u, &v);
if (w[u] < w[v]) swap (u, v);
G[u].push_back (v); deg[v]++;
}
printf ("%d\n", BFS ());
} return ;
}
BFS 标程做法
DFS/BFS+思维 HDOJ 5325 Crazy Bobo的更多相关文章
- hdu 5325 Crazy Bobo dfs
// hdu 5325 Crazy Bobo // // 题目大意: // // 给你一棵树,树上每一个节点都有一个权值w,选择尽可能多的节点, // 这些节点相互联通,而且依照权值升序排序之后得到节 ...
- 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 ...
- hdoj 3157 Crazy Circuits 【有下界最小流】
题目:hdoj 3157 Crazy Circuits 题意:如今要制造一个电路板.电路板上有 n 个电子元件,各个元件之间有单向的电流流向.然后有一个 + .电流进入, -- 电流汇入,然后推断能不 ...
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
[题目链接:NYOJ-58] 经典的搜索问题,想必这题用广搜的会比较多,所以我首先使的也是广搜,但其实深搜同样也是可以的. 不考虑剪枝的话,两种方法实践消耗相同,但是深搜相比广搜内存低一点. 我想,因 ...
- ID(dfs+bfs)-hdu-4127-Flood-it!
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4127 题目意思: 给n*n的方格,每个格子有一种颜色(0~5),每次可以选择一种颜色,使得和左上角相 ...
- [LeetCode] 130. Surrounded Regions_Medium tag: DFS/BFS
Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'. A reg ...
- HDU 4771 (DFS+BFS)
Problem Description Harry Potter has some precious. For example, his invisible robe, his wand and hi ...
随机推荐
- yum代理设置
vi /etc/yum.conf 加入以下:proxy=http://代理服务器ip:port 如果代理需要账号密码:proxy_username=userproxy_password=密码
- Hadoop入门学习随笔
推荐视频:慕课网http://www.imooc.com/video/8107 ===Hadoop是什么? 开源的.分布式存储+分布式计算平台. http://hadoop.apache.org == ...
- 56.ISE综合,在chipscope信号列表看不到
代码写好后,进行逻辑综合,在chipscope上添加被触发的信号时,发现有些在信号列表里看不到,这是因为这些信号没有参与到逻辑电路设计中,产生不想关的电路,综合器会默认优化资源. 还有一种情况是,对于 ...
- loadView, viewDidLoad 快速使用
一 loadView: 在每次访问 UIViewController时,且其 view = nil 时,会调用这个方法,所以大家在开发中想自己设置 view 的可以用这个方法,在这个方法中自定义 v ...
- C++中的抽象类及纯虚函数的实现与否
1.含有纯虚函数的叫抽象类 2.抽象类(一般是基类)中的纯虚函数无论函数体实现与否,都没有关系,系统会自动忽略 3.继承自抽象类的子类,必须要实现父类的纯虚函数才可以实例化对象 4.抽象类不允许实例化 ...
- c enum用法
c语言中enum的用法,先用关键字enum声明一个类型如enum HUMAN {MAN ,WOMAN};这里就声明了一个HUMAN这个枚举类型.其中MAN的值为0,后面依次递增.后面要用的时候,先声明 ...
- c++函数内部声明函数,在函数外面实现函数是可以的
这个具体有什么用我也不大清楚,只知道可以这样 #include <iostream> //#include "header1.h" using namespace st ...
- String、StringBuilder、StringBuffer
String String ...
- 20145129 《Java程序设计》第5周学习总结
20145129 <Java程序设计>第5周学习总结 教材学习内容总结 语法与继承架构 使用try.catch Java中所有错误都会被打包为对象,可以尝试(try)捕捉(catch)代表 ...
- Word图片版式设置问题
word里面插入图片,版式设置为嵌入式,又显示不完整:设置上下,图片又跑到页面上方空白处.无论怎么设置,都不满意. 以为是word的问题,后来网络搜索才发现,如果段落行距为固定值的话,图片改为嵌入型后 ...