洛谷 P2024 NOI2001 食物鏈

2021-10-23 00:26:05 字數 898 閱讀 1262

這是一道並查集的題目。我們先來分析一下題目。有三種動物,a 吃 b,b吃 c,c 吃 a。那麼對於乙個動物來說,另乙個動物就有了三種情況:同類,天敵以及獵物。

很容易可以想到,僅僅是利用普通的並查集已經無法滿足需要了,因為我們有三種情況需要表示。僅僅表示同類可以只用一倍長度的陣列,那麼如果是用三種關係,我們是不是可以用三倍長度的陣列呢。

我們不妨來嘗試一下,宣告乙個三倍長度的陣列。第一倍長度表示的是同類關係,第二倍長度表示的是第一倍長度的動物的獵物,第三倍則表示的是天敵。這樣就簡單了,詳細見**注釋。

#include

using

namespace std;

const

int maxn =

50001

;int a[

3* maxn]

;int

find

(int x)

void

unity

(int x,

int y)

intmain()

if(k ==1)

//如果為真,那麼x的同類和y的同類,x的獵物是y的獵物,x的天敵是y的天敵

unity

(x, y)

;unity

(x + n, y + n)

;unity

(x +

2* n, y +

2* n);}

else

unity

(x + n, y)

;unity

(x +

2* n, y + n)

;unity

(x, y +

2* n);}

} cout << ans;

return0;

}

洛谷P2024 NOI2001 食物鏈

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

洛谷 P2024 NOI2001 食物鏈

思路 種類並查集,搗鼓搗鼓把題a了,但是沒咋懂,列入學習清單,參考了這篇部落格和這篇部落格 1 include 2 include3 include4 include5 include 6 include7 include8 include9 include10 include 11 include...

P2024 NOI2001 食物鏈(洛谷)

題目傳送門 核心解法 並查集 關鍵要理清楚這些關係是怎樣的 即通過了解題意可知 假設現在有如下三種動物型別 老虎,老虎的食物,老虎的天敵。所輸入的x y都只滿足這三種型別 輸入m次去判斷關係 x y是兩個獨立的未知種類的動物 即不知道是老虎本體 食物還是天敵 現在需要通過構建且查詢個體間的關係,因此...