hdu 2363 最短路 列舉)

2021-09-06 08:59:38 字數 1033 閱讀 8689

思路:和之前hdu上做過的一題很像。。。就是先求求出所有的高度差,排序後列舉,每次都一次spfa,求出dist,若dist[n]!=inf,說明是在最小高度差下找到了最短路徑,直接break即可。。。另外,發現若不用visited標記的話,時間是其兩倍。。。orz....以後還是老老實實加visited 吧。。。

1 #include2 #include3 #include4 #include5

const

int maxn=110;6

const

int inf=1

<<30;7

using

namespace

std;

8struct

node;

11 vectormp[maxn];

12struct

pointh[maxn*maxn];

1516

inth[maxn];

17int

dist[maxn];

18bool

visited[maxn];

19int

n,m;

2021

int cmp(const point &p,const point &q)

2425

26void spfa(int low,int

high)48}

49}50}

51}5253

intmain()

64for(int i=1;i<=m;i++)

73int k=0;74

for(int i=1;i<=n;i++)79}

80 sort(h,h+k,cmp);

81int i=0;82

while(i

87 i++;88}

89 printf("

%d %d\n

",h[i].high-h[i].low,dist[n]);90}

91return0;

92 }

hdu 2363 最短路 列舉)

思路 和之前hdu上做過的一題很像。就是先求求出所有的高度差,排序後列舉,每次都一次spfa,求出dist,若dist n inf,說明是在最小高度差下找到了最短路徑,直接break即可。另外,發現若不用visited標記的話,時間是其兩倍。orz.以後還是老老實實加visited 吧。1 incl...

hdu2363 列舉 最短路 好題

這道題目一開始我的思路就是錯了,前前後後掙扎了n個小時。開始的想法是dijkstra,通過二分列舉高度差。但是發現乙個問題,就是因為dijkstra裡面優先選擇的是短的路。我直接二分高度差,是有兩個限制條件。然後就想到spfa,後來仔細想了想還是不行。最後用dfs了,才100個點嘛,感覺穩了,結果又...

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...