Little Q is fighting against scary monsters in the game ``Monster Hunter''. The battlefield consists of nn intersections, labeled by 1,2,...,n1,2,...,n, connected by n−1n−1bidirectional roads. Little Q is now at the 11-th intersection, with XX units of health point(HP). 
There is a monster at each intersection except 11. When Little Q moves to the kk-th intersection, he must battle with the monster at the kk-th intersection. During the battle, he will lose aiai units of HP. And when he finally beats the monster, he will be awarded bibi units of HP. Note that when HP becomes negative(<0<0), the game will over, so never let this happen. There is no need to have a battle at the same intersection twice because monsters do not have extra life. 
When all monsters are cleared, Little Q will win the game. Please write a program to compute the minimum initial HP that can lead to victory. 

InputThe first line of the input contains an integer T(1≤T≤2000)T(1≤T≤2000), denoting the number of test cases. 
In each test case, there is one integer n(2≤n≤100000)n(2≤n≤100000) in the first line, denoting the number of intersections. 
For the next n−1n−1 lines, each line contains two integers ai,bi(0≤ai,bi≤109)ai,bi(0≤ai,bi≤109), describing monsters at the 2,3,...,n2,3,...,n-th intersection. 
For the next n−1n−1 lines, each line contains two integers uu and vv, denoting a bidirectional road between the uu-th intersection and the vv-th intersection. 
It is guaranteed that ∑n≤106∑n≤106. 
OutputFor each test case, print a single line containing an integer, denoting the minimum initial HP. 
Sample Input

1
4
2 6
5 4
6 2
1 2
2 3
3 4

Sample Output

3

思路:直接贴一个官方题解

代码如下:(不懂的可以再问我):
typedef long long LL;

const int maxm = ;

struct Node {
int id, change;
LL a, b;
bool operator < (const Node &x) const {
if(a >= b && x.a < x.b ) return true; // b > a 的优先
if(a < b && x.a >= x.b ) return false;
if(a < b && x.a < x.b ) return a>x.a;//a < b,按照a从小到大
if(a >= b && x.a >= x.b) return b<x.b;//a >= b,按照b从大到小
} void operator += (const Node &n) { // A means the minimum HP to kill monster
LL A = a, B = b;
if(b < n.a) {
A = a + n.a - b;
B = n.b;
} else {
B = b - n.a + n.b;
}
a = A, b = B;
}
} buf[maxm]; int fa[maxm], vis[maxm], cnt, n; vector<int> G[maxm]; void build(int u, int father) {
fa[u] = father;
for (int i = ; i < G[u].size(); ++i) {
int v = G[u][i];
if(v != father)
build(v, u);
}
} int Find(int u) {
if(vis[fa[u]])
return fa[u] = Find(fa[u]);
else
return fa[u];
} void init() {
cnt = ;
buf[].a = buf[].b = buf[].change = ;
buf[].id = ;
memset(vis, , sizeof(vis)), memset(fa, , sizeof(fa));
for (int i = ; i <= n; ++i)
G[i].clear();
} int main() {
int t;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
init();
priority_queue<Node> q;
for (int i = ; i <= n; ++i) {
scanf("%lld%lld", &buf[i].a, &buf[i].b);
buf[i].id = i, buf[i].change = ;
q.push(buf[i]);
}
for (int i = ; i < n - ; ++i) {
int t1, t2;
scanf("%d%d", &t1, &t2);
G[t1].push_back(t2), G[t2].push_back(t1);
}
build(, );
while(!q.empty()) {
Node tmp = q.top();
q.pop();
int u = tmp.id;
if(vis[u] || tmp.change != buf[u].change)
continue;
vis[u] = ;
int f = Find(u);
buf[f] += buf[u];
if(f > ) {
buf[f].change = ++cnt;
q.push(buf[f]);
}
}
printf("%lld\n", buf[].a);
}
return ;
}

tmp.change != buf[u].change: 堆中有修改前的u和修改后的u

 

Day3-A-Problem H. Monster Hunter HDU6326的更多相关文章

  1. HDU 6326 Problem H Monster Hunter

    \(\mathtt{Problem H}\) \(\mathtt{Monster}\) \(\mathtt{Hunter}\) \(\mathcal{Description}\) 题目 给定一棵 \( ...

  2. HDU 6326.Problem H. Monster Hunter-贪心(优先队列)+流水线排序+路径压缩、节点合并(并查集) (2018 Multi-University Training Contest 3 1008)

    6326.Problem H. Monster Hunter 题意就是打怪兽,给定一棵 n 个点的树,除 1 外每个点有一只怪兽,打败它需要先消耗 ai点 HP,再恢复 bi点 HP.求从 1 号点出 ...

  3. HDU暑假多校第三场H.Monster Hunter

    一.题意 给定一个树状地图,每个树节点上有一只怪物,打死一只怪物的过程中将会消耗A点HP,打死之后将会获得B点HP.因为树状结构,所以每只怪物必须先打死父节点的怪兽之后在打死子节点的怪物.现在,给定每 ...

  4. 实验12:Problem H: 整型数组运算符重载

    Home Web Board ProblemSet Standing Status Statistics   Problem H: 整型数组运算符重载 Problem H: 整型数组运算符重载 Tim ...

  5. The Ninth Hunan Collegiate Programming Contest (2013) Problem H

    Problem H High bridge, low bridge Q: There are one high bridge and one low bridge across the river. ...

  6. Gym 100531H Problem H. Hiking in the Hills 二分

    Problem H. Hiking in the Hills 题目连接: http://codeforces.com/gym/100531/attachments Description Helen ...

  7. Codeforces Gym 100610 Problem H. Horrible Truth 瞎搞

    Problem H. Horrible Truth Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/1006 ...

  8. Codeforces Gym 100342H Problem H. Hard Test 构造题,卡迪杰斯特拉

    Problem H. Hard TestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100342/at ...

  9. 清北学堂入学测试P4751 H’s problem(h)

    P4751 H’s problem(h)  时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 小H是一个喜欢逛街的女孩子,但是由于上了大学 ...

随机推荐

  1. 吴裕雄--天生自然Numpy库学习笔记:NumPy 位运算

    bitwise_and() 函数对数组中整数的二进制形式执行位与运算. import numpy as np print ('13 和 17 的二进制形式:') a,b = 13,17 print ( ...

  2. Cisco无线mDNS

    1.mDNS介绍 两个协议:mDNS和Bonjour mDNS: mDNS(Multicast DNS):主要实现了在没有传统DNS Server的情况下使用LAN内的主机实现相互发现和通信. 使用U ...

  3. spring boot 配置时区差别

    前提 数据库时区:GMT+8 show variables like '%time_zone%'; 本机电脑时区: 情景一.不指定时区 传递的参数映射到Data不指定时区,连接数据库不指定时区,保存时 ...

  4. 【Html 页面布局】

    float:left方式布局 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /& ...

  5. php对象、面向对象

    对象 万物皆对象 一切可见之物都是对象 一切不可见之物也是(抽象的事物也是对象): 对象包含两部分 1对象的组成元素 对象的数据模型又称为对象的属性,又被称为对象的成员变量 2.对象的行为 是对象的行 ...

  6. Update(Stage4):spark_rdd算子:第2节 RDD_action算子_分区_缓存:缓存、Checkpoint

    4. 缓存 概要 缓存的意义 缓存相关的 API 缓存级别以及最佳实践 4.1. 缓存的意义 使用缓存的原因 - 多次使用 RDD 需求: 在日志文件中找到访问次数最少的 IP 和访问次数最多的 IP ...

  7. pip-9.0.1更新到pip-10.0.1遇到的问题

    使用 pip 安装第三方库时,报错: You are using pip version 9.0.3, however version 10.0.1 is available. You should ...

  8. MYSQL优化考虑十个方面

    1)索引 2)sql优化 3)锁 4)延迟 5)参数优化 6)连接数 7)cpu 8)iops 9)磁盘 10)内存

  9. mysql查询最大值,最小值,平均值,总和

    select max(score) maxScore,min(score) minScore,avg(score) avgScore,sum(score) sumScore from exam_sco ...

  10. [python]python中的一些包以及他们的基本用处和安装

    pika可以用来连接rabbitmqpip install pika -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com ...