problem a.jungle roads
d.s.沒什麼好說的,最小生成樹
c.
/*view codekruskal演算法
kruskal演算法求mst
*/#include
#include
#include
#include
using
namespace
std;
const
int maxn=110;//
最大點數
const
int maxm=10000;//
最大邊數
int f[maxn];//
並查集使用
struct
edgeedge[maxm];
//儲存邊的資訊,包括起點/終點/權值
int tol;//
邊數,加邊前賦值為0
void addedge(int u,int v,int
w)//
排序函式,將邊按照權值從小到大排序
bool
cmp(edge a,edge b)
int find(int
x)//
傳入點數,返回最小生成樹的權值,如果不連通返回-1
int kruskal(int
n)
if(cnt==n-1)break
; }
if(cnt1)return -1;//
不連通else
return
ans;
}int
main()
}printf(
"%d\n
",kruskal(n));
}return0;
}
problem b.networking
c.
/*view codeprim演算法
prim求mst
耗費矩陣cost,標號從0開始,0~n-1
返回最小生成樹的權值,返回-1表示原圖不連通
*/#include
#include
#include
using
namespace
std;
const
int inf=0x3f3f3f3f
;const
int maxn=110
;bool
vis[maxn];
intlowc[maxn];
//點是 0 n-1
int prim(int cost[maxn],int
n)
if(minc==inf)return -1;//
原圖不連通
ans+=minc;
vis[p]=true
;
for(int j=0;j)
if(!vis[j]&&lowc[j]>cost[p][j])
lowc[j]=cost[p][j];
}return
ans;
}int
main()
}scanf("%d
",&r);
for(int i=0;ii)
}printf(
"%d\n
",prim(cost,p));
}return0;
}
problem c.building a space station
c.
/*view codeprim演算法
prim求mst
耗費矩陣cost,標號從0開始,0~n-1
返回最小生成樹的權值,返回-1表示原圖不連通
*/#include
#include
#include
#include
using
namespace
std;
const
double inf=1e10;
const
int maxn=110
;bool
vis[maxn];
double
lowc[maxn];
//點是 0 n-1
double prim(double cost[maxn],int
n)
if(minc==inf)return -1;//
原圖不連通
ans+=minc;
vis[p]=true
;
for(int j=0;j)
if(!vis[j]&&lowc[j]>cost[p][j])
lowc[j]=cost[p][j];
}return
ans;
}int
main()
}for(int i=0;ii)
for(int i=0;ii)
else}}
printf(
"%.3f\n
",prim(cost,n));
}return0;
}
problem l.還是暢通工程
hint.題解見以前
problem n.暢通工程再續
hint.題解見以前
最小生成樹專題
首先來回顧一下最小生成樹的概念 在一給定的無向圖 g v,e 中,u,v 代表連線頂點 u 與頂點 v 的邊 即 而 w u,v 代表此邊 的權重,若存在 t 為 e 的子集 即 且為無迴圈圖,使得 的 w t 最小,則此 t 為 g 的最小生成樹。最小生成樹其實是最小權重生成樹的簡稱。簡單地說,就...
最小生成樹專題
一 prim演算法 poj1258 有n個農場,已知這n個農場都互相相通,有一定的距離,現在每個農場需要裝光纖,問怎麼安裝光纖能將所有農場都連通起來,並且要使光纖距離最小,輸出安裝光纖的總距離 資料 幾個點,矩陣表示各點中間的距離 40 4 9 21 4 0 8 17 9 8 0 16 21 17 ...
專題 最小生成樹 一
這個專題我們討論的問題是在無向圖中尋找一棵最小生成樹 minimum spanning tree 這個問題對於有向圖的討論也是有意義的,只不過演算法更加複雜,這裡我們將只討論無向圖。最小生成樹存在當且僅當圖是連通的。此處我們不對概念做過多的介紹,直接介紹兩種主要的演算法 1.kruskal演算法 2...