時間限制: 1 s
空間限制: 128000 k
題目等級 : ** gold
description
乙個國家有n個城市。若干個城市之間有**線連線,現在要增加m條**線(**線當然是雙向的了),使得任意兩個城市之間都直接或間接經過其他城市有**線連線,你的程式應該能夠找出最小費用及其一種連線方案。
輸入描述
input description
輸入檔案的第一行是n的值(n<=100).
第二行至第n+1行是乙個n*n的矩陣,第i行第j列的數如果為0表示城市i與城市j有**線連線,否則為這兩個城市之間的連線費用(範圍不超過10000)。
輸出描述
output description
輸出檔案的第一行為你連線的**線總數m,第二行至第m+1行為你連線的每條**線,格式為i j,(i第m+2行是連線這些**線的總費用。
樣例輸入
sample input
0 15 27 6 0
15 0 33 19 11
27 33 0 0 17
6 19 0 0 9
0 11 17 9 0
樣例輸出
sample output
1 42 5
資料範圍及提示
data size & hint
n<=100
1 #include2 #include3 #include4思路:見**中的思路,還有題目給定的已經連線的線路並不一定在最小生成樹中,(題目沒讓你必須用這些啊!為何不選個小的!~)標紅段**務必好好理解using
namespace
std;
5struct
nodeedge[5000
];10
int cnt=0,n,map[100][100],l[102][2],dis[110],vis[102],s[101],u[101
];11
intmain()
1242}43
int tot=0,sum=0
;44 for(int i=1;i<=n;i++)
45
52 }
53 printf("
%d\n
",tot);
54for(int i=1;i<=tot;i++)
55 printf("%d %d\n",l[u[i]][0],l[u[i]][1]);
56 printf("
%d\n
",sum);
57return0;
58 }
此題prim演算法好打,但是我覺得存邊,輸出邊還是有一定難度的
Code Vs 1003 電話連線
比較水的題目,裸prim.下面 寫得有點麻煩.僅供參考.其實不用寫那麼多記錄.我是蒟蒻.qaq include include include include include include include includeusing namespace std const int m 105 con...
codevs 1003 電話連線
題解 prim 分析 從輸出要求中就可以看出本題是prim演算法求最小生成樹,所以,只需要實現就可以了。那麼,我們來回顧一下prim演算法 1.設有2個集合v1,v2 預設有5個點 2.在圖中找到離當前第乙個點最近的點,我們假設是2,然後用2去鬆弛每一條邊 3.重複第2步直到迴圈n 1次 那麼題目就...
codevs 1003 電話連線
拿到這個題,看到說要用prim演算法,感覺是個模板題,不過好像自己也沒怎麼寫過關於最小生成樹的題目,就嘗試著自己寫乙個prim演算法吧。基本思路是in i 維護每個i是否在生成樹裡面,用優先順序佇列儲存邊struct,過載小於運算子,但是不知道為什麼就是wa了。現在也還沒相通。然後就去看題解了,不過...