POJ 1182 食物鏈 帶權並查集

2021-07-09 07:58:21 字數 1131 閱讀 9167

今天一定徹底弄懂 帶權並查集

好吧這題我還是不懂,,,煩躁

現在基本上知道了吧,不過不清楚公式是怎樣推出來的,如果要我再寫一遍的話,估計會寫很多個判斷

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 

10 #include 11

//#include

12 #include 13 #include 14 #include

15#define ll long long

16#define inf 0x3f3f3f3f

17#define open_file

18#define maxn 50005

19using

namespace

std;

20int

n, k;

21int

father[maxn];

22int

rank[maxn];

23//

rank[x]表示x 與 father[x] 的關係,0 是同類,1 是 x 吃 father[x], 2 是 father[x] 吃 x

24int find(int

x)40

void union_set(int x, int y, int

z)52

intmain()

5362 memset(rank, 0, sizeof

(rank));

63int

x, y, z;

64int cnt = 0;65

for (int i = 1; i <= k; i++)

71if (x == y && z == 2)75

if (x == y) continue;76

int a = find(x), b =find(y);

77if (a == b && rank[x] != (z - 1 + rank[y]) % 3)88

if (a !=b)92}

93 printf("

%d\n

", cnt);

94 }

poj 1182 食物鏈 帶權並查集

這個題需要將動物分成3種,每次以y 0為物件,吃他的x為1,需要注意的是下一次碰到x cha函式遞迴更新與x有關的物件 include include include includeusing namespace std define n 50005 int father n num n int c...

poj1182食物鏈 帶權並查集

基本思路 帶權並查集 簡單的理解就是將有關係的點合併到乙個集合,記錄每個點到集合根節點的權重 include include include define max 50010 using namespace std int par max 記錄集合根節點 int offset max 記錄每個節點到...

poj 1182 食物鏈 帶權並查集

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