日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

POJ 1703 Find them, Catch them(并查集高级应用)

發布時間:2025/3/15 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)

#include<cstdio> using namespace std;const int MAXN = 1e5; int fa[MAXN*2+2]; int n,m;int find_fa(int u) {int i,j,k;i = u;while(fa[i] != i){i = fa[i];}fa[u] = i;j = u;while(j != i){k = fa[j];fa[j] = i;j = k;}return i; }int main() {int i,t,p,q,pp,qq,x,y;char ch[3];scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i=1; i<=2*n; i++) //Union-Find Sets init{fa[i] = i;}for(i=1; i<=m; i++) //calculate while reading{scanf("%s%d%d",ch,&x,&y);if(ch[0] == 'A'){p = find_fa(x);q = find_fa(y);pp = find_fa(x+n);qq = find_fa(y+n);if(p == q) printf("In the same gang.\n");else if(pp == q || p == qq) printf("In different gangs.\n");else printf("Not sure yet.\n");}else if(ch[0] == 'D'){p = find_fa(x);q = find_fa(y);pp = find_fa(x+n);qq = find_fa(y+n);if(pp != q) fa[pp] = q;if(qq != p) fa[qq] = p;}}}return 0; }

類似題目:poj 2492 A Bug's Life (幾乎一模一樣)
poj 1182 && luogu P2024 [NOI 2001]食物鏈 (一樣的思路,元素分成三類)
luogu P1525 [NOIP 2010提高組] 關押罪犯 (個人認為難度較大)

發表于 2018-12-26 21:53 suncongbo 閱讀(...) 評論(...) 編輯 收藏 刷新評論刷新頁面返回頂部

總結

以上是生活随笔為你收集整理的POJ 1703 Find them, Catch them(并查集高级应用)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。