HDU 1213有意思的並查集 掌門

2021-08-15 11:07:34 字數 983 閱讀 2994

深夜未耕

【乙個典型的並查集】

參考**:

借用了裡面的掌門學說注釋這道題

#include using namespace std;

int pre[1010];

//你不知道吧 我乙個人在寢室 放著楊千嬅的小星星 對面你發來一句話 我對著螢幕空空地說

//"我喜歡你!"

//"我喜歡你你聽到了嗎 聽不到也沒關係 我在慢慢像你靠近"

int find(int x)

//i=x;i的直屬掌門是pre[i],也正好是路徑壓縮裡面下乙個需要重新皈依門派的人;r賦值給pre[i],就是讓i明白終極掌門是r,在pre這個記錄掌門是誰的陣列裡面存一下;最後j的值(pre[i]的值)給i,也就是路徑壓縮裡面下乙個需要重新皈依門派的人,繼續這個迴圈,一路上問過的人他們的終極掌門都是r,最後返回r

return r;//最後返回的是他們最終的掌門.jpg

}int main()

} cout << total << endl;

//因為有重複 的呀,如果重複total就不會減了,知道本來最開始 有多少人很重要。

} return 0;

}

【另外】自己上手打了一遍,還有兩個要注意:

陣列稍微開大一點

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

pre[i] = i;

這裡是從1開始的(好習慣?emmm)

因為編號這種東西並不會智慧型到從0開始  注意一下

//吐槽.....這個題怎麼這麼幹的並查集,還是只有25a= =

// 從寒假開始第一場*64的人到現在只有 *32..還是要善始善終呀

//你看..我只要有環境,簡直是無所不能啊!

// 在寢室裡乙個晚上都沒搞好的東西....來到機房鎖手機十分鐘寫完了  還是需要個人監督我0 0今天是和她約了早起 

//加油啦!

hdu1213並查集模板

題意 n個人吃飯 給出認識的關係,認識的才能在一張桌子上吃飯,求最少需要幾張桌子 思路 沒給出兩人關係,放入 並查集中 最後查詢父節點的數目即可 include include include include include include using namespace std int n,m i...

hdu1213 並查集板子

並查集是一種支援合併與查詢的資料結構,在森林中進行操作,加上路徑壓縮,合併和查詢的時間複雜度幾乎都是常數。並查集最基礎的作用就是建立不同的點之間的所謂的 關係 並且查詢兩者是否有關係。並查集的乙個特點是向量型關係傳遞性,比如a b b c,則有a c,是不是特別像向量之間的傳遞?在很多時候並查集的應...

爆炒洋蔥圈 HDU 1213 並查集初學

雖說做專案會讓人有成就感,但是演算法這種考驗基礎的東西不能落下。更何況我演算法那麼差呢。最近在刷學校的oj準備ccf,刷到了並查集,寫下這篇文章供自己以後和後來人查閱。如有紕漏,敬請指教。並查集是一種樹形的資料結構,用於處理一些不相交集合的合併和查詢問題。常常在使用中以森林來表示 descripti...