選擇 動態樹

2022-05-09 01:57:08 字數 2478 閱讀 9423

題目描述:

現在,我想知道自己是否還有選擇。

給定n個點m條邊的無向圖以及順序發生的q個事件。

每個事件都屬於下面兩種之一:

1、刪除某一條圖上仍存在的邊

2、詢問是否存在兩條邊不相交的路徑可以從點u出發到點v

輸入:

第一行三個整數n,m,q

接下來m行,每行兩個整數u,v,表示u和v之間有一條邊

接下來q行,每行乙個大寫字母o和2個整數u、v,依次表示按順序發生的q個事件:

當o為』z』時,表示刪除一條u和v之間的邊

當o為』p』時,表示詢問是否存在兩條邊不相交的路徑可以從點u出發到點v

輸出:

對於每組詢問,如果存在,輸出yes,否則輸出no

樣例輸入:

7 8 7

1 21 3

1 42 3

3 43 7

7 45 6

z 1 4

p 1 3

p 2 4

z 1 3

p 1 3

z 6 5

p 5 6

樣例輸出:

yesyes

nono

資料規模和約定:

對於20%的資料,max(n,m,q)<=100

對於全部資料,max(n,m,q)<=100000

思路:離線做,用動態樹維護連通性,對於已經在同乙個連通分塊裡面的兩個點,將這兩個點之間的所有點全部縮成乙個點,這個點就是最上邊的那個,也就是split(x,y)以後的y,然後詢問的時候,倒著做,拆邊變成加邊,對於兩個詢問點,詢問他們是不是在同乙個縮的點內,如果是,那麼他們就有兩條邊不相交的路線。

1 #include2 #include3 #include4 #include5 #include6 #include7

struct

edgee[200005],ask[200005

];10 std::map >mp;

11int n,m,q,ts[500005],tx[500005

];12

int ch[200005][2],fa[200005],f[200005],st[200005],rev[200005],ans[200005

];13

intread()

16while ('0'

<=ch&&ch<='9')

17return t*ff;18}

19int find(int

x)25

int key=i;

26for (int i=top;i>=1;i--)

27 f[ts[i]]=key;

28return

key; 29}

30bool isroot(int

x)34

void updata(int

x){}

35void pushdown(int

x)42}43

void rotate(int

x)49 fa[x]=z;fa[y]=x;fa[ch[x][r]]=y;

50 ch[y][l]=ch[x][r];ch[x][r]=y;

51updata(y);updata(x);52}

53void splay(int

x)58

for (int i=top;i>=1;i--) pushdown(st[i]);

59while (!isroot(x))

65rotate(x);66}

67}68void access(int

x)74}75

int find(int

x)80

void makeroot(int

x)83

void split(int x,int

y)86

void bfs(int

x)92

for (int i=1;i<=t;i++)96}

97void link(int x,int

y)else

106}

107int

main()

115char opt[2

];116

for (int i=1;i<=q;i++)

126for (int i=1;i<=m;i++)

127if (mp[e[i].u][e[i].v]>0

)130

for (int i=q;i>=1;i--)

131if (ask[i].id==1

)else

134if (ask[i].id==2

)135

139for (int i=1;i<=q;i++)

140if (ask[i].id==2

)144 }

bzoj4229 動態樹 選擇

4229 選擇 time limit 10 sec memory limit 128 mb submit 100 solved 59 submit status discuss description 現在,我想知道自己是否還有選擇。給定n個點m條邊的無向圖以及順序發生的q個事件。每個事件都屬於下面...

mysql動態選擇 在mysql中選擇動態列

是否有可能像這樣遍歷乙個表 mysql select from stackoverflow results id type criteria id result 1 car env 1 2 car gas 3 car age 4 bike env 1 5 bike gas 6 bike age 1 ...

WiFi DFS 動態頻率選擇

wifi網路為我們提供了2個無線lan網路運營頻段 2.4ghz頻段和5ghz頻段。2.4ghz頻段的干擾是目前wlan網路面臨的困境之一。許多無線區域網專業人員通常會建議您盡可能將重要的業務場景放在5ghz頻段上,因為5ghz頻段擁有更多可用通道且每個通道相應的裝置數量相應更少。然而,就在你暢快的...