求最長邊與最短邊差值最小的生成樹.
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...