如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz
輸入格式:
第一行包含兩個整數n、m,表示該圖共有n個結點和m條無向邊。(n<=5000,m<=200000)
接下來m行每行包含三個整數xi、yi、zi,表示有一條長度為zi的無向邊連線結點xi、yi
輸出格式:
輸出包含乙個數,即最小生成樹的各邊的長度之和;如果該圖不連通則輸出orz
如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz
輸入格式:
第一行包含兩個整數n、m,表示該圖共有n個結點和m條無向邊。(n<=5000,m<=200000)
接下來m行每行包含三個整數xi、yi、zi,表示有一條長度為zi的無向邊連線結點xi、yi
輸出格式:
輸出包含乙個數,即最小生成樹的各邊的長度之和;如果該圖不連通則輸出orz
#include#include#include#include#includeusing namespace std;
const int maxn=2e5+10;
int pre[5010];
struct node
p[maxn];
void init(int n)}
int find(int x)
bool cmp (node x,node y)
void mix(int x,int y)}
int main()
sort(p+1,p+n+1,cmp);
int num=0,ans=0;
init(m);
for(int i=1;i<=n&&num}
if(num==m-1)
else
}return 0;
}
最小生成樹 Kruskal演算法 板子
比prim演算法更優秀,並且更好理解。但是需要借助並查集的知識 並查集演算法 如果不清楚並查集,可以去看看這篇,順便a下板子題 kruskal板子題 演算法思路 先把邊按照權值進行排序,用貪心的思想優先選取權值較小的邊,並依次連線,判斷是否這倆個點連通 用並查集來判斷是否存在環 然後繼續搜。incl...
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...
最小生成樹
package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...