題意:n個城堡,m個橋,每個橋的權值都不一樣,題目要求能使城堡彼此聯通的所有橋集合裡面權值最小的那種,由此可以判斷這是一道求最小生成樹的題。
#include
#include
using
namespace
std;
typedef
long
long ll;
const
int maxn = 2000 + 5, maxm = 2e5 + 5;
struct edge myedge[maxm];
int p[maxn], n, m;
bool cmp(const edge&p1,const edge&p2)
int find(int x)
int main()
}if (k != 0)
sort(myedge, myedge + k, cmp);
int x, y, counter = 0;
ll value, sum = 0;
for (int i = 0; i < k; i++)
}printf("yes\n%lld\n", sum);
}else
printf("no");
return
0;}
最小生成樹模板
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 ...
模板 最小生成樹
題目描述 如題,給出乙個無向圖,求出最小生成樹,如果該圖不連通,則輸出orz 輸入輸出格式 輸入格式 第一行包含兩個整數n m,表示該圖共有n個結點和m條無向邊。n 5000,m 200000 接下來m行每行包含三個整數xi yi zi,表示有一條長度為zi的無向邊連線結點xi yi 輸出格式 輸出...