摘要: 4612Warm hdu up题目:给出一个图,添加一条边之后,问能够在新图中得到的最少的桥的数量。分析:我们可以双联通分量进行缩点,原图变成了一棵树。问题变成了:求树中添加一条边之后,使得不在圈的边最少。显然求一边直径,用总边数减掉最长路上的边数就是答案。注意数据存在重边的情况。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll;typedef un 阅读全文
posted @ 2013-09-13 19:27 yejinru 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 题目:给出一棵树,每棵树的节点有权值,现在有m组询问,在线询问以节点x为根,高度为y的所有子节点的最大权值。这题是我今早在做HDU 4601时,由于思路错了,稍微改动了一下题目,得到这个简单版,不知道有没有出现过原题。分析: 由于必须在线,离线的做法不可取。 询问的是以节点x为根的子树的节点信息,因此考虑一下dfs序。在dfs时,我们用数组d[i]记录第i层的节点。那么,在一棵子树下相同高度的节点必然连续出现在数组d[i]中。对于n个节点按d[i]重新编号,并且把值也在新编号的位子上,记录相应的hash值(hash[新编号] = 旧编号)。 构造线段树,维护一下新的编号。 这时,以节点... 阅读全文
posted @ 2013-09-13 13:52 yejinru 阅读(191) 评论(2) 推荐(0) 编辑