最小生成樹
需要把給出的座標轉換成島與島之間的距離儲存在二維陣列中,可以用兩個一維陣列儲存,我用了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就好了。不過這裡存在不連通的情況,不想前面的的工程那麼暢通,最後加乙個迴圈...