POJ 1703 Find them, Catch them(并查集高级应用)
POJ 1703 Find them, Catch them(并查集高級應用)
手動博客搬家:本文發表于20170805 21:25:49, 原地址https://blog.csdn.net/suncongbo/article/details/76735893
URL: http://poj.org/problem?id=1703
題目大意:本題即很經典的“龍幫虎幫”問題。
有n個元素(n<=1e5),分布在兩個不同的集合里。
現在有M個語句(m<=1e5),每個語句共兩種:(1) 給定某兩個元素在不同的集合中。(2) 詢問兩個元素是否在同一集合中。對于是、否、無法確定的情況,分別輸出"In the same gang.", "In different gangs.", "Not sure yet."
思路分析:假如給定的是兩個元素在同一集合中,思路就很明確了。
但是現在給定的是兩個元素不同集合,而且已知僅有兩個集合,于是我們就可以想辦法將其轉化為兩元素同集合問題。
設有元素A,B, 則我們將每個元素分別“克隆”為A', B', 但將她們放入分別與本身不同的另外一個集合中。
同時,保證A和A', B和B', ..., 永遠不會同集合。
然后,假如已知A與B不同集合,則需將A和B', B和A'分別放入同一集合(union操作),假如已知A與B同集合,則需把A和B, A'和B'進行union一下即可。
最后,回答詢問時,有以下三種情況:
(1) A與B同集合,或A'與B‘同集合:In the same gang.
(2) A與B'同集合,或B與A'同集合:In different gangs.
(3) 其他:Not sure yet.
代碼呈現:(Time:532MS ,Memory:960K ,Code:1005B)
類似題目:poj 2492 A Bug's Life (幾乎一模一樣)
poj 1182 && luogu P2024 [NOI 2001]食物鏈 (一樣的思路,元素分成三類)
luogu P1525 [NOIP 2010提高組] 關押罪犯 (個人認為難度較大)
總結
以上是生活随笔為你收集整理的POJ 1703 Find them, Catch them(并查集高级应用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cnblogs正式启用
- 下一篇: POJ 3250 Bad Hair Da