POJ 2513 TRIE樹 並查集 尤拉路

2022-05-24 04:24:09 字數 1405 閱讀 1823

題意:

給定許多根木棒,兩邊分別塗有不同顏色,問能否將他們連成一條直線。規定只能將相同顏色的兩端相連。

思路:用trie樹儲存單詞,trie樹最後乙個字母的節點編號就是這個單詞的編號(可以和模擬)

並查集檢查是否連通——有尤拉路的前提是圖連通

最後加上無向圖尤拉路的判定就好了~奇數度的節點只能有0或2個

view code

1 #include 2 #include 3 #include 4 #include 

5 #include 6

7#define n 300000

8#define bug system("pause")910

using

namespace

std;

1112

struct

trie

13trie[n*5

];17

18char sa[n][12],sb[n][12

];19

int num,cnt,now,wd[n*8],bh[n][2],fa[n*8

];20

bool fg[n*8

];21

22void

init()

2327

28void insert(char

a)29

41 now=trie[now].son[a[i]-'a'

];42

}43 trie[now].bot=true

;44 wd[now]++;//

單詞出現次數

45 fg[now]=true;46

}4748int findfa(int

x)49

5354

bool

judge()

5563 memset(fg,0,sizeof

fg);

6465

if(cs==1||cs>2) return

false;66

67for(int i=1;i<=num;i++) fa[i]=i;

6869

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

7075

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

76if

(fg[i])

7781

82return

true;83

}8485void

go()

8690

91void

read()

92100 cnt--;

101}

102103

intmain()

104

好久不寫trie了,因為陣列開小了wa了兩次,也勉強給自己乙個1a吧~嘿嘿

POJ 2513 Trie樹 尤拉迴路 並查集

1.把木棒的端點考慮為頂點,木棒考慮為邊,建立起乙個無向圖。2.問題轉化為在無向圖上判斷是否有尤拉迴路或者尤拉道路。3.在無向圖上判斷是否有尤拉迴路或者尤拉道路 尤拉定理 並查集 判斷連通性 4.考慮如何統計每個頂點的度,開始用的是暴力解法,直接用陣列記錄頂點,並且通過順序查詢獲得頂點編號,tle,...

POJ 2513(trie 並查集 尤拉迴路)

自認為此題有個bug define number 500005 int p number 5 int rank number 5 void make set int x int find set int x void link set int x,int y void union set int x...

POJ 2513 Trie樹 並查集以及尤拉路徑

這道題做的時候,幹的最sb的事就是斷點列印的東西沒刪乾淨,結果導致一開始怎麼交怎麼wa,後來怎麼交怎麼ac。不過仍然有很困惑的地方,就是在csdn blog中,他的trie樹第二維只有15,但是能過,就很奇怪,而且將其改到應該是正確的26,卻runtime error。主要是三個方面,trie樹 並...