ps:
b站上大佬的講解
路徑壓縮後的並查集查詢函式:
int
findfather
(int v)
}
集合的合併函式:
void
union
(int a,
int b)
}
例子:
題目描述:
有乙個叫做「數碼世界」奇異空間,在數碼世界裡生活著許許多多的數碼寶貝,其中有些數碼寶貝之間可能是好朋友,並且數碼寶貝世界有兩條不成文的規定:輸入格式:第一,數碼寶貝a和數碼寶貝b是好朋友等價於數碼寶貝b與數碼寶貝a是好朋友
第二,如果數碼寶貝a和數碼寶貝c是好朋友,而數碼寶貝b和數碼寶貝c也是好朋友,那麼a和b也是好朋友,現在給出這些數碼寶貝中所有好朋友的資訊,問:可以把這些數碼寶貝分成多少組,滿足每組中的任意兩個數碼寶貝都是好朋友,而且任意兩組之間的數碼寶貝都不是好朋友
輸入的第一行給右兩個正整數n(n<=100)和m(m<=100),分別表示數碼寶貝的個數和好朋友的組數,其中數碼寶貝編號為1~n。輸出格式:接下來有m行,每行兩個正整數a和b,表示數碼寶貝a和數碼寶貝b是好朋友。
輸出乙個整數,表示這些數碼寶貝可以分成的組數樣例輸入:
421
423
樣例輸出:2
**:#include
using
namespace std;
int n,m,father[
100]
,re =0;
intfindfather
(int v)
}void
union
(int a,
int b)
}int
main()
for(
int i =
0;i)for
(int i =
0;i) cout
}
end. 並查集模板
來自lifeng wang http hi.baidu.com fandywang jlu 前輩06年寫的東西,追隨前人足跡繼續努力。並查集的一些題目和相關解題報告 poj 1611 the suspects 最基礎的並查集 poj 2524 ubiquitous religions 最基本的並查集...
並查集模板
普通並查集 define max size 100005 int pa max size 儲存有向圖的邊 void init 初始化 該函式可以根據具體情況儲存和初始化需要的內容 int findset int a 不帶路勁壓縮 return a void union nodes int a,int...
並查集模板
codevs 2597 團夥 題目描述 description 1920年的芝加哥,出現了一群強盜。如果兩個強盜遇上了,那麼他們要麼是朋友,要麼是敵人。而且有一點是肯定的,就是 我朋友的朋友是我的朋友 我敵人的敵人也是我的朋友。兩個強盜是同一團夥的條件是當且僅當他們是朋友。現在給你一些關於強盜們的資...