Kruscal演算法 最小生成樹

2021-08-22 04:29:47 字數 657 閱讀 3773

kruscal演算法是加邊。

記錄每條路的權值,然後每次都選擇權值最小的邊加入集合,同時選中的每條邊的兩個點也用並查集合並,

直到所有的點都被加入了,就是最小生成樹。

時間複雜度只和邊有關係,o(e * loge)。

hihocoder1098

#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn=1e6+7;

#define inf 0x3f3f3f3f

int fa[maxn];

int init(int n)

int find(int x)

int union(int a,int b)

struct edgeedge[maxn];

bool cmp(edge a,edge b)

int n,m;

int main()

sort(edge,edge+m,cmp);//邊權排序

int ans=0;

for(int i=0;i}

printf("%d\n",ans);

return 0;

}

最小生成樹二 Kruscal演算法

還是直接看輸入輸出 輸入每個測試點 輸入檔案 有且僅有一組測試資料。在一組測試資料中 第1行為2個整數n m,表示小hi擁有的城市數量和小hi篩選出路線的條數。接下來的m行,每行描述一條路線,其中第i行為3個整數n1 i,n2 i,v i,分別表示這條路線的兩個端點和在這條路線上建造道路的費用。對於...

最小生成樹二 Kruscal演算法( )

描述 每個測試點 輸入檔案 有且僅有一組測試資料。在一組測試資料中 第1行為2個整數n m,表示小hi擁有的城市數量和小hi篩選出路線的條數。接下來的m行,每行描述一條路線,其中第i行為3個整數n1 i,n2 i,v i,分別表示這條路線的兩個端點和在這條路線上建造道路的費用。對於100 的資料,滿...

最小生成樹二 Kruscal演算法

隨著小hi擁有城市數目的增加,在之間所使用的prim演算法已經無法繼續使用了 但是幸運的是,經過計算機的分析,小hi已經篩選出了一些比較適合建造道路的路線,這個數量並沒有特別的大。小ho聽到了這個問題,發表了感慨 這不就是之前最短路問題的時候針對點集變大,但是邊集很小的稀疏圖麼?和spfa演算法當時...