题目:动态维护一组森林,要求支持一下操作:
link(x,y) : 如果x,y不在同一颗子树中,则通过在x,y之间连边的方式,连接这两颗子树
cut(x,y) : 如果x,y在同一颗子树中,且x!=y,则将x视为这颗子树的根以后,切断y与其父亲结点的连接
ADD(x,y,w): 如果x,y在同一颗子树中,则将x,y之间路径上所有点的点权增加w
query(x,y): 如果x,y在同一颗子树中,返回x,y之间路径上点权的最大值
所有非法操作输出-1
思路:LCT
代码:
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#include
#include
#include
#include