P1396 營救 題解

2022-09-19 09:36:08 字數 651 閱讀 9005

題目傳送門

這題有好幾種方法可以做,有跑最短路的,有些最小生成樹的。這裡介紹最短路的方法。

單源最短路徑,很自然地想到 dijkstra。不過題目要求的是最大值最小,所以鬆弛就要改成:

if(dis[v]>max(dis[u],e[i].w))

dis[v]=max(dis[u],e[i].w);

#include using namespace std;

int n,m,s,t;

struct edgee[(int)2e4<<1];

int head[10005],idx;

void link(int x,int y,int w);

head[x]=idx;

}struct poi

};priority_queueq;

int dis[10005];

bool vis[10005];

int main()

memset(dis,0x3f3f3f3f,sizeof(dis));

dis[s]=0;

q.push(poi);

while(!q.empty()));}}

}cout

}

題解 P1396 營救 C

原題傳送門 這道題目基本就是乙個克魯斯卡爾最小生成樹的模板題,唯一不同的是,這道題目的最終目標不是所有點相連,而是只要s和t相連就可以了。還有就是這道題目求的是最小生成樹中的最大邊權值。但是,克魯斯卡爾是從最小的邊權值開始考慮的,當s和t第一次連通時考慮的那條邊,就是當前考慮的最大的權值的邊,直接輸...

洛谷P1396 營救 題解

這其實一看就是乙個最短路的近似模板的題目,但我們要注意到兩個區之間可能會有多條道路,所以說我們只需要在最短路模板的基礎上把加和改為最大值即可,因為題目還說了要求出最後的結果是最大值的最小,所以我們可能會自然而然的想到二分,然而此題跑個dijkstra或spfa甚至是克魯斯卡爾最小生成樹都行。然而據某...

題解 洛谷P1396 營救

題目傳送門 一道並查集 二分的題。刷水題找信心 看到最大的最小就想到二分。那就稍微看看單調性 易得存在乙個滿足題意的擁擠度 w 並且使得 w 1 不滿足題意,而 w 1 滿足題意。稍微想想可知此題滿足二分的單調性,就可以二分 w 來求解。考慮二分的檢查函式,題目只要求我們判斷圖上兩個節點是否連通,那...