對於k,x,y
k=0,1,2分別表示同類,x吃y,x被y吃
如果x吃y,y吃z,則z吃x,所以k分別為1,1,2
如果x被y吃,y被z吃,則x吃z,k分別為2,2,1
如果x和y同類,y吃z,則x吃z,k分別為0,1,1
如果x和y同類,y被z吃,則x被z吃,k分別為0,2,2
我們發現(k1 + k2) % 3 = k3
#include #include #include #include using namespace std;
int const n = 50000 + 10;
int n,k,fa[n],re[n];
int find(int x)
return fa[x];
}int main()else
} }cout
}
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...