此外:
有乙個大型工廠,其中中樞控制系統出了問題,它的中樞控制系統是由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 754 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...