POJ1182 並查集(拆點??) 帶權並查集

2021-08-03 03:16:46 字數 1266 閱讀 2702

這道題可以用帶權並查集寫,但是我覺得很難想到。。

聽說是列舉歸納出權值之間的關係(這種權值關係的對應,就算在路徑壓縮的時候也是可以的)

書上的**很好。,

但是我寫的有點麻煩。。、

x 為x屬於a集合, x+m 屬於b集合, x+2*m為c集合。。

#include 

#include

#include

#include

#include

#include

#include

/*這一道題可以用帶權並查集寫,但是我感覺讓我寫是很困難的。。貌似推出那個關係用向量的寫法。

我覺得我還沒達到那個水平。。

書上的解法就很好。

相當於思維。就是用三個並查集

*/using

namespace

std;

const

int maxn=150008;

int fa[maxn];

int find1(int a)

void unite(int a,int b)

void init(int m)

}bool same(int a,int b)

int main()

else

if(c==1)

else

}else

if(c==2)

else}}

printf("%d\n",ans);

return

0;}

大佬的帶權**。。感覺很難想到啊qwq

#include 

#include

#define maxn 50001

int father[maxn],rank[maxn];

void init(int n)

int find_set(int x)

return father[x];

} bool union(int x,int y,int type)

father[fy]=fx;

rank[fy]=(rank[x]-rank[y]+type+3)%3; // 與上式不同 需仔細歸納

return

false;

} int main()

printf("%d\n",sum);

return

0;

}

poj 1182 帶權並查集

description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n編號。每個動物都是a,b,c中的一種,但是我們並不知道它到底是哪一種。有人用兩種說法對這n個動物所構成的食物鏈關係進行描述 第一種說法是 1 x y 表示x和y是...

poj1182 帶權並查集

題意 中文題就不描述了 思路 帶權並查集模板題 加入乙個陣列 表示這個點和它父節點的關係 表示同類,表示父親吃它,表示它吃父親 每次需要更新和父親之間的關係 include includeconst int n 50005 int p n r n n,k void init int x int fi...

POJ 1182 帶權並查集

食物鏈 time limit 1000ms memory limit 10000k total submissions 89563 accepted 26905 description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n...