原題傳送門
這道題目基本就是乙個克魯斯卡爾最小生成樹的模板題,唯一不同的是,這道題目的最終目標不是所有點相連,而是只要s和t相連就可以了。還有就是這道題目求的是最小生成樹中的最大邊權值。
但是,克魯斯卡爾是從最小的邊權值開始考慮的,當s和t第一次連通時考慮的那條邊,就是當前考慮的最大的權值的邊,直接輸出就可以了啊。
**也很簡單,貼一下:
1 #include2using
namespace
std;
3struct
noded
48 noded(int uu,int vv,int
ww)9
12 }mp[200010
];13
bool
cmp(noded x,noded y)
1417
int fa[5010
];18
intget(int
x)1926}
27bool merge(int x,int
y)28
35else
return
false;36
}37int ans[250010
];38
void
init()
3944}45
intmain()
4654 sort(mp+1,mp+1+p,cmp);
55//
for(int i=1;i<=k;i++)
56//
59init();
60int cnt=0;61
int ans=0;62
for(int i=1;i<=p;i++)
6371
if(cnt==p-1) break;72
}73}74
return0;
75 }
P1396 營救 題解
題目傳送門 這題有好幾種方法可以做,有跑最短路的,有些最小生成樹的。這裡介紹最短路的方法。單源最短路徑,很自然地想到 dijkstra。不過題目要求的是最大值最小,所以鬆弛就要改成 if dis v max dis u e i w dis v max dis u e i w include usin...
洛谷P1396 營救 題解
這其實一看就是乙個最短路的近似模板的題目,但我們要注意到兩個區之間可能會有多條道路,所以說我們只需要在最短路模板的基礎上把加和改為最大值即可,因為題目還說了要求出最後的結果是最大值的最小,所以我們可能會自然而然的想到二分,然而此題跑個dijkstra或spfa甚至是克魯斯卡爾最小生成樹都行。然而據某...
題解 洛谷P1396 營救
題目傳送門 一道並查集 二分的題。刷水題找信心 看到最大的最小就想到二分。那就稍微看看單調性 易得存在乙個滿足題意的擁擠度 w 並且使得 w 1 不滿足題意,而 w 1 滿足題意。稍微想想可知此題滿足二分的單調性,就可以二分 w 來求解。考慮二分的檢查函式,題目只要求我們判斷圖上兩個節點是否連通,那...