編寫乙個程式,計算給定加權圖g=(v,e)的最小生成樹的各邊權值之和。
輸入:
第一行輸入g的定點數n。接下來n行輸入表示g的n*n的鄰接矩陣a。a的元素aij代表頂點i到頂點j的邊的權值。
另外,便不存在時記為-1.
輸出:
輸出g的最小生成樹的各邊權值總和,佔1行。
限制:
1<=n<=100 0<=aij<=200 (aij!=-1時) aij=aji g為連通圖。
輸入示例:
5
-1 2 3 1 -1
2 -1 -1 4 -1
3 -1 -1 1 1
1 4 1 -1 3
-1 -1 1 3 -1
輸出示例:
5
**:
#includeusing今天也是元氣滿滿的一天! good luck !namespace
std;
const
int maxn=100
;const
int inf=(1
<<21
);int n,m[maxn][maxn];//
鄰接矩陣,記錄u到v的邊的權值
intprim()
d[0]=0
;
while(1
)
}if(u==-1
)
break
; color[u]=2
;
for(int v=0;v)}}
}int sum=0
;
for(int i=0;i)
return
sum;
}int
main()
}cout
return0;
}
最小生成樹 Prim
include stdio.h include stdlib.h include io.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define maxedge 20 ...
最小生成樹 prim
演算法模型 由任意乙個頂點開始 將此頂點存入s集,剩餘頂點存入t集合 每次遍歷頂點,取一條能夠連線s與t最短邊e,直到所有頂點全部加入s include include define inf 1 30 int n,m,vis 110 low 110 int map 110 110 int init ...
最小生成樹 PRIM
這個是有關普利姆的演算法,從乙個點出發,找出與這個點相連的所有點的對應的權值最小的那個,然後再把這個點從集合中劃掉。模板如下 include include define inf 0xfffff define max 2005 using namespace std int map max max ...