日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bzoj2049 Cave 洞穴勘测 LCT模版

發(fā)布時(shí)間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj2049 Cave 洞穴勘测 LCT模版 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2049: [Sdoi2008]Cave 洞穴勘測(cè)

Time Limit:?10 Sec??Memory Limit:?259 MB


Description

輝輝熱衷于洞穴勘測(cè)。某天,他按照地圖來到了一片被標(biāo)記為JSZX的洞穴群地區(qū)。經(jīng)過初步勘測(cè),輝輝發(fā)現(xiàn)這片區(qū)域由n個(gè)洞穴(分別編號(hào)為1到n)以及若干通道組成,并且每條通道連接了恰好兩個(gè)洞穴。假如兩個(gè)洞穴可以通過一條或者多條通道按一定順序連接起來,那么這兩個(gè)洞穴就是連通的,按順序連接在一起的這些通道則被稱之為這兩個(gè)洞穴之間的一條路徑。洞穴都十分堅(jiān)固無法破壞,然而通道不太穩(wěn)定,時(shí)常因?yàn)橥饨缬绊懚l(fā)生改變,比如,根據(jù)有關(guān)儀器的監(jiān)測(cè)結(jié)果,123號(hào)洞穴和127號(hào)洞穴之間有時(shí)會(huì)出現(xiàn)一條通道,有時(shí)這條通道又會(huì)因?yàn)槟撤N稀奇古怪的原因被毀。輝輝有一臺(tái)監(jiān)測(cè)儀器可以實(shí)時(shí)將通道的每一次改變狀況在輝輝手邊的終端機(jī)上顯示:如果監(jiān)測(cè)到洞穴u和洞穴v之間出現(xiàn)了一條通道,終端機(jī)上會(huì)顯示一條指令 Connect u v 如果監(jiān)測(cè)到洞穴u和洞穴v之間的通道被毀,終端機(jī)上會(huì)顯示一條指令 Destroy u v 經(jīng)過長(zhǎng)期的艱苦卓絕的手工推算,輝輝發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象:無論通道怎么改變,任意時(shí)刻任意兩個(gè)洞穴之間至多只有一條路徑。因而,輝輝堅(jiān)信這是由于某種本質(zhì)規(guī)律的支配導(dǎo)致的。因而,輝輝更加夜以繼日地堅(jiān)守在終端機(jī)之前,試圖通過通道的改變情況來研究這條本質(zhì)規(guī)律。然而,終于有一天,輝輝在堆積成山的演算紙中崩潰了……他把終端機(jī)往地面一砸(終端機(jī)也足夠堅(jiān)固無法破壞),轉(zhuǎn)而求助于你,說道:“你老兄把這程序?qū)憣懓伞薄]x輝希望能隨時(shí)通過終端機(jī)發(fā)出指令 Query u v,向監(jiān)測(cè)儀詢問此時(shí)洞穴u和洞穴v是否連通。現(xiàn)在你要為他編寫程序回答每一次詢問。已知在第一條指令顯示之前,JSZX洞穴群中沒有任何通道存在。

Input

第一行為兩個(gè)正整數(shù)n和m,分別表示洞穴的個(gè)數(shù)和終端機(jī)上出現(xiàn)過的指令的個(gè)數(shù)。以下m行,依次表示終端機(jī)上出現(xiàn)的各條指令。每行開頭是一個(gè)表示指令種類的字符串s("Connect”、”Destroy”或者”Query”,區(qū)分大小寫),之后有兩個(gè)整數(shù)u和v (1≤u, v≤n且u≠v) 分別表示兩個(gè)洞穴的編號(hào)。

Output

對(duì)每個(gè)Query指令,輸出洞穴u和洞穴v是否互相連通:是輸出”Yes”,否則輸出”No”。(不含雙引號(hào))

Sample Input

樣例輸入1 cave.in
200 5
Query 123 127
Connect 123 127
Query 123 127
Destroy 127 123
Query 123 127
樣例輸入2 cave.in

3 5
Connect 1 2
Connect 3 1
Query 2 3
Destroy 1 3
Query 2 3



Sample Output

樣例輸出1 cave.out
No
Yes
No


樣例輸出2 cave.out

Yes
No

HINT

?

數(shù)據(jù)說明 10%的數(shù)據(jù)滿足n≤1000, m≤20000 20%的數(shù)據(jù)滿足n≤2000, m≤40000 30%的數(shù)據(jù)滿足n≤3000, m≤60000 40%的數(shù)據(jù)滿足n≤4000, m≤80000 50%的數(shù)據(jù)滿足n≤5000, m≤100000 60%的數(shù)據(jù)滿足n≤6000, m≤120000 70%的數(shù)據(jù)滿足n≤7000, m≤140000 80%的數(shù)據(jù)滿足n≤8000, m≤160000 90%的數(shù)據(jù)滿足n≤9000, m≤180000 100%的數(shù)據(jù)滿足n≤10000, m≤200000 保證所有Destroy指令將摧毀的是一條存在的通道本題輸入、輸出規(guī)模比較大,建議c\c++選手使用scanf和printf進(jìn)行I\O操作以免超時(shí)

?

?LCT裸題,但是還是調(diào)了很長(zhǎng)時(shí)間orz

#include <cstdio> #include <algorithm> #define maxn 100005 using namespace std; char opr[10]; bool rev[maxn]; int p[maxn],n,m; int ch[maxn][2],f[maxn],stk[maxn]; int get(int x){return ch[f[x]][1]==x; } void pushdown(int x){if(rev[x]){rev[ch[x][0]]^=1;rev[ch[x][1]]^=1;swap(ch[x][0],ch[x][1]);rev[x]^=1;} } void rotate(int x){int g=get(x);int fa=f[x],ffa=f[fa];ch[fa][g]=ch[x][g^1];if(ch[fa][g])f[ch[fa][g]]=fa;f[fa]=x;ch[x][g^1]=fa;f[x]=ffa;if(ffa)ch[ffa][ch[ffa][1]==fa]=x;return; } void splay(int x){int tail=0;for(int now=x;now;now=f[now])stk[++tail]=now;while(tail){pushdown(stk[tail--]);}while(f[x]){p[x]=p[f[x]];p[f[x]]=0;// if(f[f[x]]) rotate(get(x)==get(f[x])?f[x]:x);加上這句就會(huì)玄學(xué)RE rotate(x);} } void access(int u){for(int v=0;u;u=p[u]){splay(u);f[ch[u][1]]=0;p[ch[u][1]]=u;ch[u][1]=v;p[v]=0;f[v]=u;v=u;} } int find_root(int x){access(x);splay(x);while(ch[x][0]){x=ch[x][0];}return x; } void move_root(int x){access(x);splay(x);rev[x]^=1; } void join(int u,int v){move_root(u);p[u]=v;splay(u); } void cut(int u,int v){move_root(u);access(v);splay(v);if(p[u]==v) p[u]=0;else{f[u]=0;ch[v][ch[v][1]==u]=0;} } int main(){int u,v;scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%s",opr);scanf("%d%d",&u,&v);if(opr[0]=='C') join(u,v);if(opr[0]=='D') cut(u,v);if(opr[0]=='Q'){if(find_root(u)==find_root(v)) printf("Yes\n");else printf("No\n");}}return 0; }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/al76/p/9419819.html

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的bzoj2049 Cave 洞穴勘测 LCT模版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。