給定 n
nn個結點和 q
qq 次操作,每個操作為如下形式:
a xy
a x y
axy 在結點 x
xx和y
yy之間連線一條邊。
q xy
q x y
qxy 給定一條已經存在的邊 (x,
y)
(x,y)
(x,y
),求有多少條簡單路徑,其中包含邊 (x,
y)
(x,y)
(x,y) 。
保證在任意時刻,圖的形態都是一棵森林。
該題簡單來說,也就是lct維護子樹資訊
因為最終的答案就是x
xx節點的子樹大小∗y*y
∗y節點子樹的大小
然而一般的lct都是維護鏈上資訊,那麼如何做到維護子樹資訊呢
我們用siz
1[x]
siz1[x]
siz1[x
]表示x
xx節點總的子樹和,siz
2[x]
siz2[x]
siz2[x
]表示x
xx節點的虛兒子的子樹和
然後對其進行維護,詳情參見**
#include
#define int long long
#define m 1000009
using
namespace std;
intread()
for(
;isdigit
(ch)
;ch=
getchar()
) re=
(re<<3)
+(re<<1)
+ch-
'0';
return re*f;
}int n,rev[m]
,c[m][2
],f[m]
,q[m]
,m,siz1[m]
,siz2[m]
;char s[20]
;void
pushup
(int x)
bool
root
(int x)
void
pushdown
(int x)
}void
rotate
(int x)
void
splay
(int x)
rotate
(x);
}pushup
(x);
}void
access
(int x)
void
makeroot
(int x)
void
split
(int x,
int y)
void
link
(int x,
int y)
//void cut(int x,int y)
//int findroot(int x)
signed
main()
return0;
}
洛谷 4219 BZOJ 4530 大融合
time limit 10 sec memory limit 256 mb submit 990 solved 604 submit status discuss 小強要在n個孤立的星球上建立起一套通訊系統。這套通訊系統就是連線n個點的乙個樹。這個樹的邊是一條一條新增上去的。在某個時刻,一條邊的負載...
BJOI2014 大融合 lct維護虛子樹大小
lct在動態連邊和刪邊方面比較有優勢,但是在維護子樹資訊方面又沒有樹鏈剖分那麼方便。這道題算是lct維護虛子樹資訊比較裸的一道題。以s陣列為總的子樹大小,sx陣列為虛子樹大小。要維護虛子樹資訊 在lct原來的模板上有三個地方需要改。pushup函式 總子樹大小顯然是實子樹大小 虛子樹大小 i pus...
bzoj 4530 大融合(LCT維護子樹資訊)
傳送門biu 用lct維護子樹資訊。lct維護子樹資訊 子樹資訊lct lct維護邊權 邊權lct 知識點講解 xsiz代表節點的虛兒子的size和。rsiz代表該點在splay中的size加上該點的xsiz。每次maintain操作可以更新節點的rsiz值。增加乙個update函式來實現實兒子到虛...