思路:我們可以通過差分思想來解決;
對於乙個n個數的序列,我們再給他定義乙個n+1的位置,將其值置為0;
那麼,我們的任務就是將前n位數字都置為0;(前n位數一開始是任意的)
假如給出這樣乙個操作: l,r,w,那麼就a【l】就可以跟a【r+1】相等
可以理解位: l定點向r定點建邊
那麼,我們的任務就是,將所有頂點都連線到同一棵樹,即為:生成樹
那麼最小值即為最小生成樹
**如下:
1 #include2 #include3using
namespace
std;
4int f[100009];5
struct
nodea[200009];8
bool
cmp(node a,node b)
11int find(int
x)14
void merge(int x,int
y)18
int main(void)28
for(int i=1;i<=n+1;i++)
31 sort(a+1,a+1+m,cmp);
32int cnt=0;33
long
long ans=0;34
for(int i=1;i<=m;i++)
38if(find(a[i].x)!=find(a[i].y))43}
44if(cnt==n)else
49return0;
50 }
I 愛國(最小生成樹模板)
丁丁妹考上了公務員,經過多年的打拼當上了省長,丁丁妹決定要造福百姓決定給村與村之間修路。他知道村莊間的距離。修路的目標是每兩個村莊之間都能通過公路連線 但不一定有直接的公路相連,只要能間接通過公路可達即可 丁丁妹想知道他最少需要修多長的路。input 多組樣例,每個測試用例的第1行給出村莊數目n 1...
最小生成樹 次小生成樹
一 最小生成樹 說到生成樹首先要解釋一下樹,樹是乙個聯通的無向無環圖,多棵樹的集合則被稱為森林。因此,樹具有許多性質 1.兩點之間的路徑是唯一的。2.邊數等於點數減一。3.連線任意兩點都會生成乙個環。對於乙個無向聯通圖g的子圖,如果它包含g的所有點,則它被稱為g的生成樹,而各邊權和最小的生成樹則被稱...
最小生成樹
package 圖 最小生成樹是用最少的邊吧把所有的節點連線起來。於是和圖的深度優先搜素差不多。class stack public void push int key public int pop 檢視棧頂的元素 public int peek public boolean isempty cla...