HDU 2363 Cycling 列舉限制 最短路

2021-07-09 11:49:33 字數 829 閱讀 6086

題意:給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個點嘛,感覺穩了,結果又...