最優佈線問題 普里姆演算法

2021-07-29 12:26:18 字數 1002 閱讀 3877

題意

學校有n臺計算機,為了方便資料傳輸,現要將它們用資料線連線起來。兩台計算機被連線是指它們之間有資料線連線。由於計算機所處的位置不同,因此不同的兩台計算機的連線費用往往是不同的。

當然,如果將任意兩台計算機都用資料線連線,費用將是相當龐大的。為了節省費用,我們採用資料的間接傳輸手段,即一台計算機可以間接的通過若干臺計算機(作為中轉)來實現與另一台計算機的連線。

現在由你負責連線這些計算機,你的任務是使任意兩台計算機都連通(不管是直接的或間接的)。  分析

這題其實就是最短網路

乙個乙個點列舉,如果它小於min,並且它不等於0,那麼min=這個點,記錄下這個點

varn,tj,i,j,k,x,y,t,min:longint;

a:array[0..200,0..200]of longint;

f:array[0..200]of longint;

begin

readln(n);

fillchar(a,sizeof(a),0);

fillchar(f,sizeof(f),0);

for i:=1 to n do

for j:=1 to n do

read(a[i,j]);

f[1]:=1;

tj:=0;

for i:=1 to n-1 do

begin

min:=maxlongint;

for j:=1 to n do

if f[j]=1 then

for k:=1 to n do

if f[k]=0 then

if (a[j,k]0) then

begin

min:=a[j,k];

t:=k;

end;

if min<>maxint then

begin

tj:=tj+min;

f[t]:=1;

end;

end;

write(tj);

end.

佈線問題(普利姆演算法)

普里姆 prim 演算法 1.基本思想 設g v,e 是具有n個頂點的連通網,t u,te 是g的最小生成樹,t的初始狀態為u u0 v te 重複執行下述操作 在所有u u,v v u的邊中找一條代價最小的邊 u,v 併入集合te,同時v併入u,直至u v。即 1 從連通網路 g 中的某一頂點 u...

普里姆演算法

include include include include using namespace std define max name 5 define max vertex num 20 權的上限值 typedef char vertex max name 頂點名字串 typedef int ad...

普里姆演算法

普里姆演算法的基本思想如下 假設n 是連通網,te是n上最小生成樹中邊的集合。從u 開始,te 開始,重複執行下述操作 在所有的u屬於u,v屬於v u的邊 u,v 的邊中找到權值最小的一條邊,並且併入te,同時u併入u,直到u v 先設乙個輔助陣列closedge max 初始時先把第乙個結點存入c...