並查集 思維 X Plosives

2022-05-02 11:36:09 字數 854 閱讀 7487

一、問題描述(題目鏈結)

有n種化合物,每種化合物由兩種元素組成。當幾種的化合物數量等於他們所含不同元素的數量時,就會發生**。現在依次給出化合物的組成,當新的化合物與之前的化合物放在一起會發生**時,就不能允許這個化合物放進來。輸出拒絕的次數。

二、問題分析

把元素看成點,化合物看成邊,每次新的化合物進來當成連一條邊。

如果圖中沒有環,則每個連通分量是一棵樹,其邊數等於點數減1,不可能存在**的情況;如果圖中有環,則這個環上點數等於邊數,就會**。

使用並查集連邊,如果要連的兩個點在同一集合中,則答案加1。

三、**實現

1 #include2 #include3 #include4 #include5

using

namespace

std;

67 typedef long

long

ll;8

const

int maxn = 100000 + 10;9

intpar[maxn];

10int

n, ans;

1112

void

init()

1317

18int find_set(int

x)19

2425

void unite(int x, int

y)26

3536 par[rootx] =rooty;37}

3839

intmain()

4052 printf("

%d\n

", ans);53}

54return0;

55 }

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

A 食物鏈(並查集 思維)

我覺著這道題是很經典的並查集 思維題 題意很好理解,主要是如何去理解並查集 運用並查集解決這道題 首先先把並查集搞明白 並查集 用於歸類的資料結構 我相信剛接觸的肯定懵逼,嘻嘻 首先我用 釋 那麼這就是它歸類的大概思路 那麼如何實現呢?其實如果你對bfs記錄路徑很熟悉的話 只不過bfs記錄路徑需要s...

並查集入門(普通並查集 帶刪除並查集 關係並查集)

什麼是並查集?通俗易懂的並查集詳解 普通並查集 基礎並查集 例題 題解 how many tables problem description lh boy無聊的時候很喜歡數螞蟻,而且,還給每乙隻小螞蟻編號,通過他長期的觀察和記錄,發現編號為i的螞蟻會和編號為j的螞蟻在一起。現在問題來了,他現在只有...