杭電 1875 暢通工程再續

2021-07-10 01:50:05 字數 1011 閱讀 9351

這一題也是做的不容易……

思路是把座標再計算回每乙個點對應的邊長

不過這一題的限制條件確實給我帶來了不小的麻煩……畢竟運用還不熟練,而且自己採用的寫法是乙個比較精簡的……導致根據題意修改無從下手,不過堅持自己硬憋……總算是找到了突破口……

一是對於距離的限制

這個在進行更新離樹最近距離時加入判斷

二是到最後是否成樹

根據上乙個《一》中的這種判斷

那麼會導致在sum+=時有可能加上inf

那麼也就是說,當有可能加上inf時

也便是尋找了所有可能邊都未成樹

所以可以break 進行輸出

成功ac……

要猝死的節奏……

#include

#include

#include

using

namespace

std;

struct xy a[120];

int main()

for(int i=1; i<=n; i++)

}for(int i=1; i<=n; i++) }}

double sum=0;

dis[1]=0;

bool x=false;

while(true) else

sum+=dis[v];

for(int u=1; u<=n; u++)

dis[u]=min(dis[u],e[v][u]);}}

if(x)

printf("oh!\n");

else

printf("%.1lf\n",sum*100);

}return

0;}

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就好了。不過這裡存在不連通的情況,不想前面的的工程那麼暢通,最後加乙個迴圈...