給出n個頂點、e條邊的連通無向簡單圖,請你完成下列任務:任務1、求邊權和最小的生成樹(最小生成樹)
任務2、求邊權和最大的生成樹(最大生成樹)
任務3、求最大邊最小的生成樹(瓶頸生成樹)
任務4、求最小邊最大的生成樹(瓶頸生成樹)
第一行:兩個整數n,e(n<=50000,e<=100000),分別表示有n個新島,e對能直接用電纜連線的島嶼,其中主島為1。接下來m行:每行三個數u,v,w,1<=u,v<=n,表示島嶼u和v之間可以直接用電纜連線,距離為w(<=100000)。
第一行乙個整數,表示最小生成樹的邊權和;第二行乙個整數,表示最大生成樹的邊權和;第三行乙個整數,表示最大邊最小的生成樹中,最大邊的權值;第四行乙個整數,表示最小邊最大的生成樹中,最小邊的權值;
n<=50000,e<=100000
注意事項:1.這個就像有向圖那麼存就可以了不然排序可能有邊排不到,不然用2*m應該也行吧。
2.迴圈注意=號。
3.並查集的union修改的是父親的值,如果只修改x,y的值父親的值就沒有被修改到。
4.應該是要用long long的只不過資料太弱了。
#include#include#include#include#include#define maxn 100005
#define inf 0x3f3f3f3f
using namespace std;
struct edge
}int main()
曼哈頓最小生成樹 模板題
曼哈頓最小生成樹 給定二維平面上的n個點,在兩點之間連邊的代價為其曼哈頓距離,求使所有點連通的最小代價。樸素的演算法可以用o n2 的prim,或者處理出所有邊做kruskal,但在這裡總邊數有o n2 條,所以kruskal的複雜度變成了o n2logn 結論 以乙個點為原點建立直角座標系,在每4...
最小生成樹模板
prim演算法理解可以參考部落格 prim演算法模板 int prime int v int i,j,sum 0,min,k sum是權重和 for i 1 i n i lowcost i 表明當前狀態下在u內距離v點 s中各點 距離的最小值,每個u中點s 中點 都計算 lowcost i map ...
最小生成樹 模板
const int maxn 1010 const int maxm 200020 struct edge edges maxm int father maxn int find int x int cmp edge a,edge b 將邊按權值排序 int kruskal int n,int m ...