最小生成樹

2021-09-18 04:56:41 字數 2292 閱讀 4793

但是,問題也接踵而來——小hi現在手上擁有n座城市,且已知這n座城市中任意兩座城市之間建造道路所需要的費用,小hi希望知道,最少花費多少就可以使得任意兩座城市都可以通過所建造的道路互相到達(假設有a、b、c三座城市,只需要在ab之間和bc之間建造道路,那麼ac之間也是可以通過這兩條道路連通的)。

在一組測試資料中:

第1行為1個整數n,表示小hi擁有的城市數量。

接下來的n行,為乙個n*n的矩陣a,描述任意兩座城市之間建造道路所需要的費用,其中第i行第j個數為aij,表示第i座城市和第j座城市之間建造道路所需要的費用。

對於100%的資料,滿足n<=10^3,對於任意i,滿足aii=0,對於任意i, j滿足aij=aji,

輸出對於每組測試資料,輸出1個整數ans,表示為了使任意兩座城市都可以通過所建造的道路互相到達至少需要的建造費用。

樣例輸入

50 1005 6963 392 1182

1005 0 1599 4213 1451

6963 1599 0 9780 2789

392 4213 9780 0 5236

1182 1451 2789 5236 0

樣例輸出

4178

題解:prim板子題

**:

#include#include#include#include#include#include#include#include#include#include#include#include#include#define exp 1e-9

#define pi acos(-1.0)

#define inf 0x3f3f3f3f

using namespace std;

typedef long long ll;

int n,m,i,j,end,ans;

int vis[1005];

int d[1005];

int main()

}memset(d,inf,sizeof(d));

memset(vis,0,sizeof(vis));

d[1]=0;

ans=0;

for(i=1;i<=n;i++)

ans+=d[end];

vis[end]=1;

for(j=1;j<=n;j++)

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

}

題目:

隨著小hi擁有城市數目的增加,在之間所使用的prim演算法已經無法繼續使用了——但是幸運的是,經過計算機的分析,小hi已經篩選出了一些比較適合建造道路的路線,這個數量並沒有特別的大。

所以問題變成了——小hi現在手上擁有n座城市,且已知其中一些城市間建造道路的費用,小hi希望知道,最少花費多少就可以使得任意兩座城市都可以通過所建造的道路互相到達(假設有a、b、c三座城市,只需要在ab之間和bc之間建造道路,那麼ac之間也是可以通過這兩條道路連通的)。

在一組測試資料中:

第1行為2個整數n、m,表示小hi擁有的城市數量和小hi篩選出路線的條數。

接下來的m行,每行描述一條路線,其中第i行為3個整數n1_i, n2_i, v_i,分別表示這條路線的兩個端點和在這條路線上建造道路的費用。

對於100%的資料,滿足n<=10^5, m<=10^6,於任意i滿足1<=n1_i, n2_i<=n, n1_i≠n2_i, 1<=v_i<=10^3.

對於100%的資料,滿足一定存在一種方案,使得任意兩座城市都可以互相到達。

輸出對於每組測試資料,輸出1個整數ans,表示為了使任意兩座城市都可以通過所建造的道路互相到達至少需要的建造費用。

題解:kruscal演算法板子題。

**:

#include#include#include#include#include#include#include#include#include#include#include#include#include#define exp 1e-9

#define pi acos(-1.0)

#define inf 0x3f3f3f3f

using namespace std;

typedef long long ll;

int pre[1000005];

struct edge

edge[1000005];

bool cmp(edge x,edge y)

int finds(int x)

void union(int x,int y)

int main()

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

return 0;

}

最小生成樹 次小生成樹

一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...

最小生成樹

package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...

最小生成樹

define max vertex num 20 最大頂點數 typedef int adjmatrix max vertex num max vertex num 鄰接矩陣型別 typedef char vertextype typedef struct mgraph struct dnodecl...