時間限制:
1000 ms | 記憶體限制:
65535 kb
難度:4 描述
南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件:
1、把所有的樓都供上電。
2、所用電線花費最少
輸入第一行是乙個整數n表示有n組測試資料。(n<5)
每組測試資料的第一行是兩個整數v,e.
v表示學校裡樓的總個數(v<=500)
隨後的e行裡,每行有三個整數a,b,c表示a與b之間如果建鋪設線路花費為c(c<=100)。(哪兩棟樓間如果沒有指明花費,則表示這兩棟樓直接連通需要費用太大或者不可能連通)
隨後的1行裡,有v個整數,其中第i個數表示從第i號樓接線到外界供電設施所需要的費用。( 0
輸出每組測試資料輸出乙個正整數,表示鋪設滿足校長要求的線路的最小花費。
樣例輸入
1樣例輸出4 61 2 10
2 3 10
3 1 10
1 4 1
2 4 1
3 4 1
1 3 5 6
4最小生成樹,prim演算法 kruskal演算法
prim演算法,沒啥好說的,known陣列可以與dist陣列合併成乙個陣列使用。不過已經有鄰接矩陣這麼大(n^2)的空間浪費了,再節省這麼點(n)的空間,也沒什麼變化。
01.
#include
02.
#include
03.
using
namespace
std;
04.
#define maxn 502
05.
#define inf 10000
06.
07.
int
v,e,con[maxn][maxn],known[maxn],dist[maxn];
08.
09.
int
prim()
10.
17.
known[1]=
true
;
18.
for
(i=1;i
19.
28.
}
29.
sum+=dist[choice];
30.
known[choice]=
true
;
31.
for
(j=1;j<=v;j++)
//更新未知節點中與該節點相連節點的距離
32.
36.
}
37.
return
sum;
38.
}
39.
40.
int
main()
41.
58.
int
min=inf,tmp;
59.
for
(
int
i=1;i<=v;i++)
60.
64.
min+=prim();
65.
cout<
66.
}
67.
return
0;
68.
}
kruskal演算法
不得不感慨下啊,平時看書,似乎都理解了優先佇列啊,各種演算法啊,可真到寫的時候,就寫不出來啦,還是要練練啊。
不練,還真不知道operator《的情況下,竟然是大根堆。也就是第17行,一開始寫成小於,怎麼就總不對呢,原來小於的時候出大根堆
(不知為何,宣告bool operator
01.
#include
02.
#include
03.
using
namespace
std;
04.
#define maxn 502
05.
06.
struct
edge
07.
;
12.
13.
struct
compare
14.
19.
};
20.
21.
int
parent[maxn],v,e;
22.
23.
int
find(
int
x)
24.
28.
29.
int
kruskal(priority_queue,compare> &pq)
30.
45.
}
46.
return
sum;
47.
}
48.
49.
int
main()
50.
64.
int
min=10000,tmp;
65.
for
(
int
i=0;i
66.
70.
min+=kruskal(pq);
71.
cout<
72.
}
73.
return
0;
74.
}
nyoj 38 佈線問題(最小生成樹)
時間限制 1000 ms 記憶體限制 65535 kb 難度 4 描述 南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件 1 把所有的樓都供上電。2 所用電線花費最少 輸入第一行是乙個整數n表示有n組測試資料。n 5 每組測試資料的第一行是兩個整數v,...
NYOJ 38 最小生成樹
原來是求二維陣列的每行或者每列的最小值,不過需要主要的是如果是4個點,只需要3條邊就可以完全連線起來了,所以只需要找3次就行了。4條邊有一條邊會重複,需要捨棄。就用題目的測試資料比較,用二維陣列儲存點與點連線的距離。就用i代表行,j代表列。會發現 i,j都是從第二行開始的。而且跟y x 直線對稱。為...
nyoj 38 佈線問題
nyoj 38 佈線問題 時間限制 1000 ms 記憶體限制 65535 kb難度 4 描述 南陽理工學院要進行用電線路改造,現在校長要求設計師設計出一種佈線方式,該佈線方式需要滿足以下條件 1 把所有的樓都供上電。2 所用電線花費最少 輸入第一行是乙個整數n表示有n組測試資料。n 5 每組測試資...