HOJ 1875 暢通工程再續

2021-10-02 13:58:13 字數 1209 閱讀 1147

最小生成樹

需要把給出的座標轉換成島與島之間的距離儲存在二維陣列中,可以用兩個一維陣列儲存,我用了vector,麻煩了。

資料是有小數的,所以要注意資料型別,我在這裡wa了。

#include

#include

#include

#include

#include

#pragma warning(disable:4996)

using

namespace std;

const

int nn =

100+

5, inf =

99999999

;double a[nn]

[nn]

;int f[nn]

;typedef

struct site

site;

intfind

(int x)

intmer

(int x,

int y)

double

dis(site aa, site bb)

intmain()

for(i =

0; i < c; i++

) f[i]

= i;

for(i =

0; i < c; i++

) i =0;

//將每個島之間的距離存起來

for(vector

::iterator it = vec.

begin()

; it != vec.

end(

); it++

, i++)}

while(1

)if(flag)

break

;mer

(x, y)

; sum +

= a[x]

[y];

}int p =0;

for(i =

1; i < c; i++)if

(find

(i)!=

find

(i -1)

)if(p)printf

("oh!\n");

else

printf

("%.1lf\n"

, sum *

100);}

return0;

}

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...

HDOJ 1875 暢通工程再續

這個暢通工程還是一交就過,看來暢通工程用來入門是最好了,以後拿這些來掛就不會那麼打擊人了,天天開心。這裡求最小生成樹之前要自己構圖,很簡單就是求出點到點之間的距離,如果距離大於1000和小於10都視作不連通。點少,還是prim就好了。不過這裡存在不連通的情況,不想前面的的工程那麼暢通,最後加乙個迴圈...