想比賽前吧模板整理好,就做了一道這個題看看模板
題意:有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 真心不簡單 如下 ...