【模板】Kruskal
int n, m;
struct Edge
{
int u, v, w;
}a[MAX_M];
// 令a關於w升序排列
int r[MAX_N];
// 並查集
int Find(int x)
{
if(r[x] ^ x) return r[x] = Find(r[x]);
return x;
}
int MST;
void Kruskal()
{
for(register int i = 1; i <= n; ++i) r[i] = i;
for(register int i = 1; i <= m; ++i)
{
if(Find(a[i].u) ^ Find(a[i].v))
{
r[Find(a[i].u)] = Find(a[i].v);
MST += a[i].w;
}
}
cout << MST;
return 0;
}
相關推薦
【模板】Kruskal
int n, m; struct Edge { int u, v, w; }a[MAX_M]; // 令a關於w升序排列 int r[MAX_N]; // 並查集 int Find(int x) { if(r[x] ^ x) return r[x] = Find(r[x]); re
【模板】嚴格次小生成樹[BJWC2010] --- kruskal重構樹 + LCA
傳送門:洛谷4180 題目大意 給出 n n n個點,
C++ P3366 【模板】最小生成樹 --- kruskal
Kruskal的用處: 得出一個圖的一個最小生成樹(最小生成樹就是一個圖中總權值最小的一個子樹) Kruskal的思想: 由於要獲得最小生成樹,而最小生成樹一定連線了所有結點,所以邊權最小的邊一定會被選擇(這個需要自己證明) 然後,我們將邊權最小的邊
【模板】MST(Kruskal)
程式碼如下 #include <bits/stdc++.h> using namespace std; const int maxv=2e5+10; const int maxe=5e5+10; inline int read(){ int x=0,f=1;char ch; d
【模板】最小生成樹Kruskal
基本介紹 模板題目 程式碼實現 基本介紹 最小生成樹問題一般有兩種解法 Prim和Kruskal 因為之前學過並查集所以果斷選擇先學後者 Kruskal是一種利用並查集來求解最小生成樹的演
P3372 【模板】線段樹 1
load color 求和 整數 數字 amp article http cst 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.求出某區間每一個數的和 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,分別表示該數
P3383 【模板】線性篩素數
... right else cst pre left 數據 ret col 題目描述 如題,給定一個範圍N,你需要處理M個某數字是否為質數的詢問(每個數字均在範圍1-N內) 輸入輸出格式 輸入格式: 第一行包含兩個正整數N、M,分別表示查詢的範圍和查詢
P3371 【模板】單源最短路徑
logs alt front 最短路徑 ios num return struct 有向圖 題目描述 如題,給出一個有向圖,請輸出從某一點出發到所有點的最短路徑長度。 輸入輸出格式 輸入格式: 第一行包含三個整數N、M、S,分別表示點的個數、有向邊的個數
P3366 【模板】最小生成樹
解釋 truct 技術 題目 bre != union 100% 個數 題目描述 如題,給出一個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入輸出格式 輸入格式: 第一行包含兩個整數N、M,表示該圖共有N個結點和M條無向邊。(N<=5000,M
[洛谷3373]【模板】線段樹 2
兩個 cstring tchar int() 維護 string max nbsp 線段 思路: 線段樹。同時維護兩個 lazy tag ,一個維護乘,一個維護加。根據加法結合律,可以得出:當同一個結點進行兩次加操作時,新的標記等於兩次標記之和。根據乘法結合律,可以得出:
【模板】負環(spfa)
sizeof 貪心 com image 一行 clas 存在 cst -m 洛谷——P3385 【模板】負環 題目描述 暴力枚舉/SPFA/Bellman-ford/奇怪的貪心/超神搜索 輸入輸出格式 輸入格式: 第一行一個正整數T表
二分圖匹配 【模板】
print front space namespace spl ide ons urn sca 1 #include <algorithm> 2 #include <cstring> 3 #include <cstdio&g
洛谷—— P3386 【模板】二分圖匹配
blank lan print 一個 dfs com 二分 i++ bool https://www.luogu.org/problem/show?pid=3386 題目背景 二分圖 題目描述 給定一個二分圖,結點個數分別為n,m,邊數為e,求二分圖最大匹配數 輸
洛谷——P3370 【模板】字符串哈希
大小寫 100% max algorithm () problem pri node pan 題目描述 如題,給定N個字符串(第i個字符串長度為Mi,字符串內包含數字、大小寫字母,大小寫敏感),請求出N個字符串中共有多少個不同的字符串。 友情提醒:如果真的想好好練習哈希
Luogu P3375 【模板】KMP字符串匹配
ogr oss tel 詳解 最長 arch tro long abc P3375 【模板】KMP字符串匹配 題目描述 如題,給出兩個字符串s1和s2,其中s2為s1的子串,求出s2在s1中所有出現的位置。 為了減少騙分的情況,接下來還要輸出子串的前綴數組
三分法(洛谷3382 【模板】三分法)
printf log 含義 三分 tps ans 區間 bits int 如題,給出一個N次函數,保證在範圍[l,r]內存在一點x,使得[l,x]上單調增,[x,r]上單調減。試求出x的值。 輸入格式: 第一行一次包含一個正整數N和兩個實數l、r,含義如題目描述所示。
[洛谷3366]【模板】最小生成樹
fine nds first 最小 fin print kruskal += sca 思路:Kruskal 1 #include<cstdio> 2 #include<utility> 3 #include<algorithm&
【模板】左偏樹(可並堆)
inline 限制 需要 表示 開始 cnblogs -a 刪除 ont 題目描述 如題,一開始有N個小根堆,每個堆包含且僅包含一個數。接下來需要支持兩種操作: 操作1: 1 x y 將第x個數和第y個數所在的小根堆合並(若第x或第y個數已經被刪除或第x和第y個數在
【模板】字符串哈希
ret blog return cst unsigned urn amp hash color OJ題號:洛谷3370 思路:BKDR 1 #include<cstdio> 2 #include<vector> 3 #include
P3373 【模板】線段樹 2 區間求和 區間乘 區間加
std 數列 cst printf int img ostream string uil 題目描述 如題,已知一個數列,你需要進行下面兩種操作: 1.將某區間每一個數加上x 2.將某區間每一個數乘上x 3.求出某區間每一個數的和 輸入輸出格式 輸入格