這個題太有意思了!!!沒想到最小生成樹的題還能這麼搞
竟然乙個是託 最後又到最小生成樹的經典做法上了
第一次沒對 我又仔細看了看題 原來這個也是最小權重啊 我一開始根本沒考慮最小的問題
只是把不在一塊的島 連了起來
後來又改了幾次 樣例都對 我覺得也沒啥毛病 但 啊 就是不對
後來我又從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...