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