如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz
第一行包含兩個整數n、m,表示該圖共有n個結點和m條無向邊。(n<=5000,m<=200000)
接下來m行每行包含三個整數xi、yi、zi,表示有一條長度為zi的無向邊連線結點xi、yi
輸出包含乙個數,即最小生成樹的各邊的長度之和;如果該圖不連通則輸出orz
輸入 #1複製
4 5輸出 #1複製1 2 2
1 3 2
1 4 3
2 3 4
3 4 3
7時空限制:1000ms,128m
資料規模:
對於20%的資料:n<=5,m<=20
對於40%的資料:n<=50,m<=2500
對於70%的資料:n<=500,m<=10000
對於100%的資料:n<=5000,m<=200000
樣例解釋:
所以最小生成樹的總邊權為2+2+3=7
題解:prim演算法。分成兩個組,在集合裡和不在集合裡。
然後每次尋找連線兩個集合的最近路徑,加上即可。類似於dijkstra
#include#include#include
#include
#include
#include
#include
using
namespace
std;
const
int n=400005
;const
int oo=0x3f3f3f3f
;struct
nodee[n];
inthead[n],dis[n],cnt,n,m;
intvis[n],x,y,z,ans;
void add(int u,int v,int
w)void
boom_jjj()
for(int i=1;i<=n;i++)
dis[i]=oo;
}void
yao_chen_lai_le()
ans+=mn;
for(int i=head[now];i;i=e[i].next)
}}int
main()
洛谷 3366 最小生成樹 Kruskal
如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出包含乙個數,即最小生成樹的各邊的長度之和 如...
3366 模板 最小生成樹(Prim)
如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出包含乙個數,即最小生成樹...
最小生成樹 洛谷P3366
如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出包含乙個數,即最小生成樹...