這道題可以用帶權並查集寫,但是我覺得很難想到。。
聽說是列舉歸納出權值之間的關係(這種權值關係的對應,就算在路徑壓縮的時候也是可以的)
書上的**很好。,
但是我寫的有點麻煩。。、
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...