食物鏈(並查集)的兩種解法

2021-10-02 12:47:13 字數 1091 閱讀 2055

#include

#define max_n 50000

#define max_k 100000

int par[

3* max_n]

, ran[

3* max_n]

;void

init

(int n)

}int

find

(int x)

else

}void

unite

(int x,

int y)

else

}bool

same

(int x,

int y)

//將par分成三部分,同一部分之間的same代表同類,

//不同部分的same代表吃與被吃

//三部分之間具有對稱性,只需用部分資訊即可達到目的

void

solve()

if(t ==1)

else

}else

else}}

printf

("%d"

, ans);}

intmain()

#include

#define max_n 50000

struct node

p[max_n +1]

;//同乙個集合是同乙個群落,只有在同一群落才可能發生資訊矛盾

//根節點的rel為0,這是find()與unite()中更新rel的基礎

intfind

(int x)

}int

unite

(int x,

int y,

int p1,

int p2,

int d)

void

solve()

int ans =0;

while

(k--

)else

else}}

printf

("%d"

, ans);}

intmain()

並查集 食物鏈

noi2001,水題,但是我調了很久。食物鏈time limit 1000ms memory limit 10000k total submissions 27766 accepted 8066 description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃...

並查集 食物鏈

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

並查集 食物鏈

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