poj 2349解題報告

2021-09-01 12:11:02 字數 859 閱讀 2361

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

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

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

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

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

#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 真心不簡單 如下 ...