1577 工廠中的真相(種類並查集即食物鏈)

2022-05-27 18:30:17 字數 1324 閱讀 8049

此外:       

有乙個大型工廠,其中中樞控制系統出了問題,它的中樞控制系統是由n個紐帶連線而成

只有三種型別的紐帶,紐帶以1-n編號。

每一種中樞紐帶都對應著一種前驅紐帶和一種後繼紐帶,後繼紐帶的後繼就是當前中樞的前驅紐帶。

由於該中樞十分的重要,每個紐帶都對應這乙個負責人。

只有對應的負責人知道自己負責的紐帶與其他紐帶之間的關係,

但是也只知道自己負責的那個紐帶的後繼關係和與同種的各個紐帶,沒有誰會知道前驅關係。

問題就出在紐帶的連線順序上,於是修理人員將中樞的紐帶都取了出來,並把所有負責人都叫了過來。

但是其中有些負責人是破壞分子,不會說出他對應的紐帶的真實訊息。

每個負責人只有兩種描述方法:

第一種說法是「x s y」,表示x和y紐帶是同種紐帶無法連線;

都二種說法是「x c y」,表示x紐帶的後繼是y。

當前的話與前面的某些真的話衝突,就是假話

當前的話中 x 或 y 比 n 大,就是假話

當前的話表示 x的後繼是x,就是假話

若由n(1 <= n <= 50,000)個負責人,負責人總共說了k(0 <= k <= 100,000)句話,你的任務是輸出假話的總數,幫助修理人員盡早完工。

第一行是兩個整數n和k,以乙個空格分隔。 

以下k行每行是三個變數整數x,字元t,整數y,兩數之間用乙個空格隔開,其中t表示說法的種類。

若t='s',則表示x和y是同種型別。

若t='c',則表示x的後繼是y。

只有乙個整數,表示假話的數目。
複製

50 7

54 s 1

1 c 2

2 c 3

3 c 3

1 s 3

3 c 1

5 c 5

4
思路: 上圖最好了

#include#include#include#include#include#include#includeconst double pi = acos(-1);

using namespace std;

#define n 50010

int pre[n],re[n];

void init(int n)

}int find(int x)

void join(int x, int y, int z)

int main()

else join(x, y, z);

}printf("%d\n", ans);

return 0;

}

1577 工廠中的真相(種類並查集即食物鏈)

此外 有乙個大型工廠,其中中樞控制系統出了問題,它的中樞控制系統是由n個紐帶連線而成 只有三種型別的紐帶,紐帶以1 n編號。每一種中樞紐帶都對應著一種前驅紐帶和一種後繼紐帶,後繼紐帶的後繼就是當前中樞的前驅紐帶。由於該中樞十分的重要,每個紐帶都對應這乙個負責人。只有對應的負責人知道自己負責的紐帶與其...

種類並查集

先來經典題目poj 1182 其實我現在都不是很明白這個題是怎麼做的 這道題貌似是並查集和向量做的,其中的關係推斷現在不是很明白。只知道和根節點的關係有三種,一種是同類 rank x 0 一種是被根節點吃掉 rank x 1 一種是吃掉根基點 rank x 2 如果不是很明白這道題的話可以跳過這道題...

種類並查集

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