題意:給n個點即n個點的高度,問一條最短路的最大高度差最小值是多少?
想法:列舉所有兩個點之間的高度差,然後把這個限制用最短路去跑,可以完成的最小的限制即是答案,還有,不要寫無用的函式在上面,會wa,我丫的多謝了乙個絕對值函式,wa到死啊。
#include#include#include#include#include#define inf 0x7f7f7f7f
using namespace std;
const int nodes=100+50;
const int edges=100000+50;
int n,m;
struct node
e[edges];
struct nodee
h[edges];
int head[nodes],cnt;
int h[nodes];
void init()
void add(int a,int b,int c)
bool cmp(nodee a,nodee b)
vis[1]=1;
dis[1]=0;
q.push(1);
while(!q.empty())
}} }
return dis[n];
}int max(int a,int b)
int min(int a,int b)
{ if(a
HDU 2363 Cycling 列舉最短路
傳送門 感覺是非常浪費時間的一道題 直接o n 2 o n 2 o n2 列舉上下界去跑最短路就行了 也可以列舉下界,二分上界可能可以加速一下 include using namespace std const int maxn 2e5 10 const int inf 2e9 1 struct e...
hdu2363Cycling 二分 最短路
乙個無向圖 每個點都有高度,問從起點1到終點n的最高點減最低點的差值最小的前提下的最短路和這個差值 由於n 100所以可以先將這n個點按公升序排,列舉這個最短路的左邊最小mi,二分找最小的右邊ma include include include include using namespace std...
hdu2363 列舉 最短路 好題
這道題目一開始我的思路就是錯了,前前後後掙扎了n個小時。開始的想法是dijkstra,通過二分列舉高度差。但是發現乙個問題,就是因為dijkstra裡面優先選擇的是短的路。我直接二分高度差,是有兩個限制條件。然後就想到spfa,後來仔細想了想還是不行。最後用dfs了,才100個點嘛,感覺穩了,結果又...