暢通工程再續

2021-10-02 10:35:33 字數 1757 閱讀 7542

這個題太有意思了!!!

沒想到最小生成樹的題還能這麼搞

竟然乙個是託 最後又到最小生成樹的經典做法上了

第一次沒對 我又仔細看了看題 原來這個也是最小權重啊 我一開始根本沒考慮最小的問題

只是把不在一塊的島 連了起來

後來又改了幾次 樣例都對 我覺得也沒啥毛病 但 啊 就是不對

後來我又從csdn上搜了

那個作者說的讓我突然又思路了:

需要往模板方向靠攏,在要求的條件之下,化為: 村1 村2 距離/價錢

不就是把他們兩個兩個的遍歷一遍嗎 然後記下他們的編號 和他們之間的距離

就成了經典的最小生成樹的問題了

// 這個題太有意思了!!!

// 沒想到最小生成樹的題還能這麼搞

// 竟然乙個是託 最後又到最小生成樹的經典做法上了

// 第一次沒對 我又仔細看了看題 原來這個也是最小權重啊 我一開始根本沒考慮最小的問題

// 只是把不在一塊的島 連了起來

// 後來又改了幾次 樣例都對 我覺得也沒啥毛病 但 啊 就是不對

// 後來我又從csdn上搜了

// 那個作者說的讓我突然又思路了:

// 需要往模板方向靠攏,在要求的條件之下,化為: 村1 村2 距離/價錢

// 不就是把他們兩個兩個的遍歷一遍嗎 然後記下他們的編號 和他們之間的距離

// 就成了經典的最小生成樹的問題了

#include

#include

#include

#include

#include

using

namespace std;

//node用來輸入

struct node

;//用來之後的最小生成樹的模板

struct rode

;//排序規則

intcmp

(rode e1, rode e2)

vector rode;

vector lu;

//dp是祖先

vector<

int> dp;

intfind

(int x)

//求權重

doublejl(

int x1,

int y1,

int x2,

int y2)

intmain()

//給預設祖先

iota

(dp.

begin()

, dp.

end(),

0);//遍歷 rode

for(

int i =

1; i <= n; i++))

;}}}

sort

(lu.

begin()

, lu.

end(

), cmp)

;for

(auto e : lu)}if

(n ==1)

printf

("%.1f\n"

, ans *

100)

;else

cout <<

"oh!\n"

;//恢復預設

rode.

clear()

; lu.

clear()

; dp.

clear()

;}return0;

}

暢通工程再續

相信大家都聽說乙個 百島湖 的地方吧,百島湖的居民生活在不同的小島中,當他們想去其他的小島時都要通過劃小船來實現。現在 決定大力發展百島湖,發展首先要解決的問題當然是交通問題,決定實現百島湖的全暢通!經過考察小組rprush對百島湖的情況充分了解後,決定在符合條件的小島間建上橋,所謂符合條件,就是2...

1875 暢通工程再續

零基礎學演算法135 include using namespace std include const double inf 0x3f3f3f3f 1.0 struct node double d 105 105 int c 島嶼個數 void prim int count 1 for int i...

hdu 1875 暢通工程再續

題目 又是最小生成樹。一開始錯了幾次。我以為是當兩段路大於1000或者小於10就會不符合要求。其實是讀錯題意了。當兩段路大於1000或者小於10。只應該把這段路變成死路。下面是ac include includeusing namespace std define n 9999999 int n d...