//思路:用結構體儲存一條邊的資訊(u,v,w),因為是求最小的生成樹,所以把邊排序後,從最小的邊(起點)依次列舉可以構成的生成樹
ac原始碼:
#include #include #include #include using namespace std;
const int inf=(1<<30);
int n,m,min_num=inf,p[105];
int findset(int x)
struct edge
bool operator<(const edge& rhs)
{ return wevec;
void solve()
{ int len=evec.size();
for(int i=0;i<=len-(n-1);++i)
{ int cnt=n;
for(int k=1;k<=n;++k)
p[k]=k;
for(int j=i;j
uva 1395 苗條的生成樹(最小生成樹入門)
補一下圖論知識.題意 給n個點,m條邊,求所有生成樹中 邊權最大值 邊權最小值 的結果最小 思路 區間做一遍最小生成樹,每次記錄成功的左端點和右端點,維護最小值就可以了。用了kuangbin的模板 include include include include define inf 0x3fffff...
uva1395(最小瓶頸生成樹變形)
最小瓶頸生成樹 最大的邊權值在g的所有生成樹中是最小的。瓶頸生成樹的值為t中最大權值邊的權。無向圖的最小生成樹一定是瓶頸生成樹,但瓶頸生成樹不一定是最小生成樹。題意 求一顆生成樹,滿足最大邊和最小邊之差最小 思路分析 100個頂點,5000條邊,用kruskal演算法,暴力列舉從每條邊開始構造最小生...
UVA1395 苗條的生成樹 Slim Span
傳送門 求一棵生成樹,使它的最大邊權與最小邊權之差最小。假設已經求出了一棵最小生成樹,它的最小邊權一定是圖上所有邊中最小的 它的最大邊也應該是相對最小的。也就是說,不改變當前最小邊,它的邊權差只能變大,答案不可能變得更優了。那麼想要答案更新,只可能是最小邊變大,最大邊也變大。那麼刪去最小邊,加入比當...