bzoj#P1841. 蚂蚁搬家
蚂蚁搬家
题目描述
很久很久以前,由于感情过于丰富,我们的wish喜欢上了一个叫做蚂蚁的明星。爱屋及乌,他自然也喜欢上了蚂蚁这种可爱的小动物~~~ 于是,他在自家后院的一棵苍天大树上养了许许多多的蚂蚁。 渐渐地,wish发现蚂蚁养多了,满树都是蚂蚁窝,看得他眼都花了,于是他决定在对蚂蚁窝进行控制,销毁一些蚂蚁窝,只留下了n个。而且wish认为一个蚂蚁窝造在一条树枝的中间是不好的,所以他在每个树枝的末端或分叉点都留下了一个的蚂蚁窝,而其他地方没有留。这样,wish管理起这些蚂蚁就得心应手了。 当然,wish有时候会心情不好,所以他会拿树上的蚂蚁出气。他经常会将一个蚂蚁窝中的蚂蚁全部赶出去,并将其封掉;当然他生完气后,有爱心的他总会悔恨并且将蚂蚁窝重新开放。 鉴于上述原因,wish养的蚂蚁有个的共同的爱好:搬家。蚂蚁们经常从这个蚂蚁窝搬到那个蚂蚁窝。当然,搬家可不一定是件愉快的事情,虽然wish养的蚂蚁在搬家时并不需要搬东西(蚂蚁的家本来就没什么嘛
而且吃的东西也不用担心,有wish给)。
wish根据他多年的观察,发现蚂蚁在搬家的时候都会直接奔向目的地,中途不会经过相同的地方。而蚂蚁一次搬家的痛苦值就等于路上经过的每段树枝的痛苦值之和。而每条边的痛苦值wish是可以估算出来的。当然,有时候蚂蚁是很愿意经过一条树枝的,所以痛苦值可以是负数。而且,由于环境经常改变,所以一条树枝的痛苦值也是经常会变的。
wish是很关心他的蚂蚁们。他在家无聊的时候经常会想,如果现在蚂蚁搬家,那么可能的最大的痛苦值会是多少呢?由于wish家的树很大,这个问题很让他抓头,所以就请你写个程序帮助他吧。一开始所有的蚂蚁窝都是开放的。
## 输入格式
输入文件的第一行包含一个整数n,意义如题目中所述。
接下来n-1行,第i行用3个整数a,b,l描述编号为i的树枝。a,b为该树枝两端连接的蚂蚁窝的编号,l为该条树枝一开始的痛苦值。
接下来一行一个整数Q,表示你的程序需要处理的操作数。
接下来Q行,每行第一个整数o代表本次操作的类型:
若o=0,则接下来有一个整数x,表示wish对第x个蚂蚁窝进行了操作(若当前该蚂蚁窝开放,则改为不开放;若不开放,则改为开放)。
若o=1,则接下来有两个整数x和v,表示编号为x的树枝的痛苦值改为了v。
若o=2,则表示wish询问你当前最大的搬家痛苦值。
## 输出格式
对于上述每个o=2,输出一行。若当前所有蚂蚁窝都关闭了,则输出字符串“Nothing..Nothing!”(不含引号);若当前只有一个蚂蚁窝是开放的,则输出字符串“Only one baby!” (当然不含引号);其他情况则输出一个整数表示当前的最大搬家痛苦值。
```input1
5
2 1 -6
3 1 4
4 2 -4
5 1 -6
10
0 2
0 4
0 5
2
1 2 -2
0 5
0 3
0 3
2
0 3
4
-2
提示
对于20%的数据 n < =1000,Q < =1000 对与100%的数据 n < =100000,Q < =100000,-500 < =l < =500 -500 < =v < =500
题目来源
2008湖南省队集训By刘鹰