#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 ...