題目描述
隨著如今社會的不斷變化,交通問題也變得越來越重要,所以市長決定建設一些公路來方便各個城市之間的**和交易。雖然市長的想法很好,但是他也遇到了一般人也經常頭疼的問題,那就是手頭的經費有限……在規劃過程中,設計師們已經預算出部分城市之間建設公路的經費需求。現在市長想知道,它能不能將他的m個城市在有限的經費內實現公路交通。如果可以的話,輸出yes,否則輸出no(兩個城市不一定要直接的公路相連,間接公路到達也可以。)
輸入描述:
測試輸入包含多條測試資料
每個測試資料的第1行分別給出可用的經費c(<1000000),道路數目n(n<10000),以及城市數目m(<100)。
接下來的n行給出建立公路的成本資訊,每行給出三個整數,分別是相連的兩個城市v1、v2(0示例1
輸入20 10 5
1 2 6
1 3 3
1 4 4
1 5 5
2 3 7
2 4 7
2 5 8
3 4 6
3 5 9
4 5 2
輸出yes
示例2輸入
10 2 2
1 2 5
1 2 15
輸出yes
備註:兩個城市之間可能存在多條線路
最小生成樹模板題,直接上**(kruskal演算法)。
#include
#include
#include
using namespace std;
typedef long
long ll;
const
int inf=
0x3f3f3f3f
;const
int maxn=
1e5+10;
int par[
105]
;struct nodeno[maxn*4]
;void
init()
intfind
(int x)
void
unite
(int x,
int y)
bool same
(int x,
int y)
int n,m,mo;
bool cmp
(node x,node y)
intkruskal()
}return sum;
}int
main()
sort
(no,no+m,cmp)
;int p=
kruskal()
;if(p<=mo)cout<<
"yes"
"no"
<}return0;
}
道路公升級(最小生成樹KRUSKAL)
z國有 n 個城市和 m 條雙向道路,每條道路連線了兩個不同的城市,保證所有城市之間都可以通過這些道路互達。每條道路都有乙個載重量限制,這限制了通過這條道路的貨車最大的載重量。道路的編號從 1 至 m 巧合的是,所有道路的載重量限制恰好都與其編號相同。現在,要挑選出若干條道路,將它們公升級成高速公路...
JZOJ 1244 修建道路 最小生成樹
傳送門 給出n nn個點和已經建好的m mm條邊,求我們需要修建的最小代價使得n nn個點可以互相到達 正常最小生成樹隨便跑,對於已經修好的邊就直接在開始就放在乙個塊裡 include include include include include include include include d...
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...