poj 2513(字典樹 尤拉通路)

2022-07-19 13:57:19 字數 830 閱讀 8111

題意:給你n個火柴棍,每個火柴棍頭和尾兩種顏色,問你是否存在能夠把這些火柴棍擺成一行的情況,兩個相連的火柴棍的顏色需要一樣;

解題思路:最初的思路是用map標記顏色,然後把每種顏色看作點,每根火柴棍看作邊,求尤拉路徑,然後超時了。。。看了別人的寫法,想起來了自己還學過字典樹來著。。。然後用字典樹找就行了,快很多

**:

#include#include#include#includeusing namespace std;

const int maxn=500050;

struct tnode

};tnode *root;

int x,y;

int flag;

int dfn;

int degree[maxn];

int f[maxn];

char s[15],t[15];

tnode* newnode()

void build_trie(char *s)

p=p->next[id];

}p->exsit=true;

p->pos=++dfn;

}int query(char *s)

if(p->exsit)

return p->pos;

}int build(char *str)

}int findf(int u)

}void join(int x,int y)

int main()

// cout<=3)

flag=1;

if(flag)

else

printf("possible\n");

}

POJ 2513(字典樹 尤拉路 並查集)

本題題意是給一堆木棒,每種木棒左右兩端有兩種顏色,木棒進行拼接的時候,只有相同顏色之間才可以拼接,問最後是否可以將所有木棒拼為一根木棒。我們考慮把同一種顏色的點聚在一起,我們就可以得到乙個無向圖,如果這個無向圖是尤拉圖,代表展開之後可以一筆走完,也就是可以連線成一條木棒。所以我們用trie樹判斷每種...

POJ 2513 字典樹 一筆畫問題

大致題意 給定一些木棒,木棒兩端都塗上顏色,求是否能將木棒首尾相接,連成一條直線,要求不同木棒相接的一邊必須是相同顏色的。解題思路 可以用圖論中尤拉路的知識來解這道題,首先可以把木棒兩端看成節點,把木棒看成邊,這樣相同的顏色就是同乙個節點 問題便轉化為 給定乙個圖,是否存在 一筆畫 經過塗中每一點,...

POJ 2513 TRIE樹 並查集 尤拉路

題意 給定許多根木棒,兩邊分別塗有不同顏色,問能否將他們連成一條直線。規定只能將相同顏色的兩端相連。思路 用trie樹儲存單詞,trie樹最後乙個字母的節點編號就是這個單詞的編號 可以和模擬 並查集檢查是否連通 有尤拉路的前提是圖連通 最後加上無向圖尤拉路的判定就好了 奇數度的節點只能有0或2個 v...