poj 2349解題報告

2021-12-29 16:30:25 字數 933 閱讀 3235

想比賽前吧模板整理好,就做了一道這個題看看模板

題意:有p個點,用座標給出,有兩種****:1每個點可以和距離在d以內的點相互聯絡,2有s個專門的衛星通道,兩個點直接聯絡;

求d最小多少可以把這個圖連起來

題解:首先不考慮s個衛星通道,先求最小生成樹,用衛星通道把最小生成樹中最大的s-1個邊代替掉,然後剩下的最大的那條邊的值

就是能把整個圖連起來的d的最小值

[cpp] 

#include  

#include  

#include  

#include  

#include  

using namespace std ; 

const int maxn = 505 ; 

struct  edge 

edge[maxn * maxn] ; 

struct  point 

point[maxn] ; 

int  father[maxn] , count ; 

bool mark[maxn] , vis[maxn] ; 

double  getlength( point a , point b )   

bool  cmp( edge a , edge b )   

int  find( int x )   

bool union( int x , int y )   

double kruskal( int n ) 

} return sum ; }  

int  main() 

kruskal( p ) ; 

for( i = count - 1 ; i >= 0 ; i -- ) 

} printf( "%.2f\n" , edge[i].length ) ; 

} return 0 ; 

poj 2349解題報告

想比賽前吧模板整理好,就做了一道這個題看看模板 題意 有p個點,用座標給出,有兩種 1每個點可以和距離在d以內的點相互聯絡,2有s個專門的衛星通道,兩個點直接聯絡 求d最小多少可以把這個圖連起來 題解 首先不考慮s個衛星通道,先求最小生成樹,用衛星通道把最小生成樹中最大的s 1個邊代替掉,然後剩下的...

poj 2349 最小生成樹應用

思路 由於有s個專門的通道,我們可以先求一次最小生成樹,然後對於最小生成樹上的邊從大到小排序,前s 1條邊用s 1個衛星通道連線,那麼第s大條邊就是我們要找的最小的d了。1 include2 include3 include4 include5 include6 using namespace st...

poj解題報告 1328

不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...