0731 並查集 BZOJ1050 旅行

2021-08-21 22:38:26 字數 776 閱讀 8137

傳送門

不想複製題目了。。

給你乙個無向圖,n(n<=500)個頂點, m(m<=5000)條邊,每條邊有乙個權值vi(vi<30000)。給你兩個頂點s和t,求

一條路徑,使得路徑上最大邊和最小邊的比值最小。

由於我們看到 n 和 m 的範圍如此之小,就可以想到固定乙個最大值或最小值,然後列舉求解即可

具體做法:我們按邊權從小排到大,每次都固定乙個最小值。然後依次加邊,直到 s 和 t 聯通,此時的最大值一定是當前情況下的最小的可能。我們在這個過程用並查集維護一下 s 和 t 是否連通即可

和題解講的是一模一樣啦,就不加注釋咯

#include#include#include#include#include#define m 5009

#define eps 1e-8

using namespace std;

int n,m,s,t,maxn,minn,shuchu[3];

double ans=30009;

struct node p[m*2];

int tot=0,nxt[m*2],head[m*2],fa[509];

void add(int x,int y,int w)

bool cmp(const node &a,const node &b)

}else

}} }

if(flag)

else printf("impossible") ;

return 0;

}

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

bzoj 1116(構造 並查集)

time limit 10 sec memory limit 162 mb submit 801 solved 440 submit status discuss byteotia城市有n個 towns m條雙向roads.每條 road 連線 兩個不同的 towns 沒有重複的road.你要把其中...

bzoj 1104 貪心 並查集

題意 n m的網格,所有格仔都被水淹沒,給定一些關鍵點,求用最少的抽水機抽乾所有關鍵點的水 水的流動遵循連通器原理 我覺得這道題的真名應該叫做 被水淹沒,不知所措 考試的時候自己yy出來的好棒棒 蠻好的一道題 經過貪心可知,1 一定存在一種最優解使所有的水幫浦都在關鍵點上 2 由於水都是從高往低留,...