洛谷 p4234 最小差值生成樹

2021-08-26 20:43:45 字數 1435 閱讀 9274

求最長邊與最短邊差值最小的生成樹.

lct裸題.

將邊按照邊權從小到大排序,產生生成樹的同時立即更新答案.

如果加入一條邊的時候出現了環,把環上最小的邊去掉加入該邊.

每次跑最小值即可,用lct可以較方便地維護.

為什麼re了啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!

#include//ithea myse valgulious

namespace chtholly

template

inline

bool read(mitsuha &x)

template

inline

int write(mitsuha x)

inline

char fuhao()

}using

namespace chtholly;

using

namespace

std;

const

int yuzu=4e5,inf=0x3f3f3f3f;

typedef

int fuko[yuzu|10];

fuko vis;

struct edge

void wt()

bool

operator

<(const edge &b) const

void rev(int x)

void push_down(int x)

void pushall(int x)

void push_up(int x)

void splay(int x)push_up(x);

}void access(int x)

void mkrt(int x)

void split(int x,int y)

int fdrt(int x)

int link(int x,int y)

int cut(int x,int y)

}my_;

#define val my_.val

#define xiao my_.xiao

#define access my_.access

#define split my_.split

#define mkrt my_.mkrt

#define splay my_.splay

#define link my_.link

#define cut my_.cut

#define fdrt my_.fdrt

int main()

link(u,i+n),link(i+n,v),++cnt;

vis[i]=1;

}if (cnt>=n-1)

}write(llx);

}

謝謝大家.

P4234 最小差值生成樹

題目鏈結 題目描述 給定乙個點標號從 1 11 到 n nn 的 有 m mm 條邊的無向圖,求邊權最大值與最小值的差值最小的生成樹。圖可能存在自環。輸入格式 第一行有兩個整數,表示圖的點數 n nn 和邊數 mmm。接下來 m mm 行,每行三個整數 u,v w u,v,w u,v,w,表示存在一...

P4234 最小差值生成樹

求最小差值生成樹 考慮先把邊從小到大排序 從大到小也可以,就是反過來而已 然後一條條邊列舉,如果兩端點還未聯通,直接聯通 如果整個圖已經聯通了,此時可以理解為列舉了邊的最大值 因為邊權從小到大排序了 最大值確定,就應該要讓最小值越大越好,又因為要在這兩個端點行成的路徑上刪掉乙個點,那麼就刪掉環上權值...

luoguP4234 最小差值生成樹

按照邊的權值從小到大排序,依次加入,並刪除能夠刪除的權值最小的一條邊,用 set 維護當前所有邊的邊權,並查集維護聯通性,lct 維護兩點間最小值和 link cut 操作即可 include define mp make pair using namespace std typedef unsig...