luoguP4234 最小差值生成樹

2022-05-11 03:34:31 字數 1049 閱讀 1773

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

#include #define mp make_pair

using namespace std;

typedef unsigned long long ull;

typedef long long ll;

template inline void read(_t &f)

while(c >= '0' && c <= '9')

f *= fu;

}const int n = 250000 + 10;

struct ele

}p[n];

set < pair > min;

int fa[n], ch[n][2], rev[n], minn[n], val[n], wz[n], st[n], f[n], n, m, len, cnt, ans = int_max;

int isroot(int u)

int get(int u)

void update(int u)

void pushdown(int u)

}void rotate(int u)

void splay(int u)

void access(int u)

}void makeroot(int u)

void link(int u, int v)

void cut(int u, int v)

int query(int u, int v)

int find(int x)

int main()

sort(p + 1, p + m + 1);

for(int i = 1; i <= m; i++) else

if(cnt == n - 1)

}cout << ans << endl;

return 0;

}

P4234 最小差值生成樹

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

P4234 最小差值生成樹

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

洛谷 p4234 最小差值生成樹

求最長邊與最短邊差值最小的生成樹.lct裸題.將邊按照邊權從小到大排序,產生生成樹的同時立即更新答案.如果加入一條邊的時候出現了環,把環上最小的邊去掉加入該邊.每次跑最小值即可,用lct可以較方便地維護.為什麼re了啊啊啊啊啊啊啊啊啊 include ithea myse valgulious na...