這一題也是做的不容易……
思路是把座標再計算回每乙個點對應的邊長
不過這一題的限制條件確實給我帶來了不小的麻煩……畢竟運用還不熟練,而且自己採用的寫法是乙個比較精簡的……導致根據題意修改無從下手,不過堅持自己硬憋……總算是找到了突破口……
一是對於距離的限制
這個在進行更新離樹最近距離時加入判斷
二是到最後是否成樹
根據上乙個《一》中的這種判斷
那麼會導致在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就好了。不過這裡存在不連通的情況,不想前面的的工程那麼暢通,最後加乙個迴圈...