食物鏈 種類並查集

2021-08-06 07:30:09 字數 935 閱讀 6280

推薦blog傳送門,超級詳細:

做題思路:

種類並查集,首先利用乙個陣列a來確定並查集關係,同時在建立乙個陣列b來表示某點與他們的boss點(根點)的關係。

現規定:

0: 某點與他的根點為同類

1: 某點與他的根點的關係為, 根點種類的動物的可以吃掉該點種類的動物

2: 某點與他的根點的關係為, 該點種類的動物的可以吃掉根點種類的動物

至於 那兩個重要公式(**已標註),如果自己不想推就去看推薦的那個blog,很詳細。

幾點注意:

1.如果兩點沒有並查集關係,首先給他們確定並查集關係

2. 如果兩點有了並查集關係,檢驗他們所陳述的與根點的關係是否相同

3. 注意 輸入的資料大於n的時候 不要讓他們進入mergy函式

**如下

#include #include#include#include using namespace std;

int ans;

int a[50100];

int b[50100];

void init ()//初始化兩個陣列

}int get_boss(int x)

}void mergy(int z,int x, int y)

else

}else

else

}}int main ()

{ int n,m,x,y,z;

scanf("%d %d",&n,&m);

init();

ans=0;

while(m--)

{scanf("%d %d %d",&z,&x,&y);

if(x>n|| y>n) ans++; //false

else if(x==y && z==2) ans++; // false

else mergy(z,x,y);// n

食物鏈(種類並查集)

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

食物鏈(種類並查集)

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

種類並查集 食物鏈

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