SSL 1682——USACO 3.1 Agri-Net 最短網路 (最小生成樹)
Description
農民約翰被選為他們鎮的鎮長!他其中一個競選承諾就是在鎮上建立起網際網路,並連線到所有的農場。當然,他需要你的幫助。約翰已經給他的農場安排了一條高速的網路線路,他想把這條線路共享給其他農場。為了用最小的消費,他想鋪設最短的光纖去連線所有的農場。你將得到一份各農場之間連線費用的列表,你必須找出能連線所有農場並所用光纖最短的方案。每兩個農場間的距離不會超過100000
Input
第一行: 農場的個數,N(3<=N<=100)。
第二行..結尾: 後來的行包含了一個N*N的矩陣,表示每個農場之間的距離。理論上,他們是N行,每行由N個用空格分隔的陣列成,實際上,他們限制在80個字元,因此,某些行會緊接著另一些行。當然,對角線將會是0,因為不會有線路從第i個農場到它本身。
Output
只有一個輸出,其中包含連線到每個農場的光纖的最小長度。
Sample Input
4
0 4 9 21
4 0 8 17
9 8 0 16
21 17 16 0
Sample Output
28
圖論!!!!!
最小生成樹!!!!!
普里姆演算法(貪心)
列舉每一個被記錄過的點,找到這些被記錄過的點的到任何一個沒有記錄過的點最小長度,再記錄下來,標記為1.
程式碼如下:
var n,i,j,k,t,min,ans:longint;
a:array[0..101,0..101]of longint;
v:array[0..101]of longint;
begin
readln(n);
for i:=1 to n do
begin
for j:=1 to n do read(a[i,j]);
readln;
end;
fillchar(v,sizeof(v),#0);
v[1]:=1;
for i:=1 to n-1 do
begin
min:=maxlongint;
for j:=1 to n do
if v[j]=1 then
for k:=1 to n do
if v[k]=0 then
if (a[j,k]<min)and(a[j,k]<>0) then
begin
min:=a[j,k];
t:=k;
end;
if min<>maxlongint then
begin
v[t]:=1;
ans:=ans+min;
end;
end;
write(ans);
end.
相關文章
- 最短網路Agri-Net
- P1546 最短網路 Agri-Net
- 北極通訊網路——最小生成樹kruskal
- 使用canvas尋路最小生成樹Canvas
- 最小生成樹
- 資料結構------最短路徑Dijkstra和最小生成樹Prim資料結構
- 最小度限制生成樹
- 【模板】最小生成樹
- Matlab生成Kruskal最小生成樹Matlab
- 【圖論】最小生成樹圖論
- 最小生成樹專項
- 圖論 最小生成樹圖論
- 【模板】最小生成樹-kruskal
- Prim 最小生成樹 圖解圖解
- 最小生成樹學習筆記筆記
- 最小生成樹__Kurskal演算法演算法
- 最小生成樹__Prim演算法演算法
- 最小生成樹的演算法演算法
- Kruskal 最小生成樹演算法演算法
- LSGAN:最小二乘生成對抗網路
- 最小樹形圖(有向圖的最小生成樹)朱劉演算法演算法
- BZOJ 1626 [Usaco2007 Dec]Building Roads 修建道路:kruskal(最小生成樹)UI
- 最小生成樹之 Prim 演算法演算法
- 【演算法學習】最小生成樹演算法
- NOIP 複習題之最小生成樹
- 演算法-圖論-最小生成樹演算法圖論
- 一些“最小生成樹”板題
- 淺談三種求最小生成樹的方法
- 最小生成樹prim普里姆演算法演算法
- 最小生成樹之普里姆演算法演算法
- 圖論中的最小生成樹演算法圖論演算法
- Boruvka求最小生成樹(菠蘿演算法)演算法
- 網路流-最小割
- 前端必會演算法 - 最小生成樹問題前端演算法
- 圖論之帶權圖「最小生成樹之Prim」圖論
- 最小生成樹(MinSpanTree)的Kruskal演算法演算法
- C135 線段樹分治 P5631 最小mex生成樹
- P8906 [USACO22DEC] Breakdown P [最短路]