題意:給你n點,m條路,每個點都有不同的高度,題目要求在高度差最小的情況下的最短路徑。
開始做這個題目時,我是用二次最短路在做的,回來發現思路錯了,就參考了大牛**,恍然大悟。
只要對高度公升序排序,然後列舉各個高度差下的最短路徑
**:
#include#includeusing namespace std;
#define p 1500000001
int a[105],b[105],s[105][105],n;
int main()
sort(a+1,a+n+1);
for(i=1;i<=m;i++)
else
vist[1]=1;
dist[1]=0;
while(1)
}}
hdu2363 列舉 最短路 好題
這道題目一開始我的思路就是錯了,前前後後掙扎了n個小時。開始的想法是dijkstra,通過二分列舉高度差。但是發現乙個問題,就是因為dijkstra裡面優先選擇的是短的路。我直接二分高度差,是有兩個限制條件。然後就想到spfa,後來仔細想了想還是不行。最後用dfs了,才100個點嘛,感覺穩了,結果又...
hdu 1692 列舉 剪枝
題意 給你一些井的資訊,井中原有的水,當井中的水滿足一定量後會被破壞並且這些水全部流入下乙個井中,用多少能量能直接破壞這個井。然後問要想破壞第n口井至少要多少能量。解題思路 這題首先是要找到從哪口井開始破壞,因為要破壞第n口井,要麼直接破壞n,要麼n之前有連續的幾口井一同被破壞,如果中間出現了乙個不...
HDU3721 列舉 最長路
題意 給你一顆n個節點n 1條邊的樹,每條邊都有乙個權值,現在讓你任意移動一條邊然後把這條邊連線到任意兩個點上,最後問你怎樣移動才能使樹上相距最遠的兩個點距離最小。思路 先求出樹的最長路,然後列舉移動最長路上的所有邊,移走這條邊後,原樹必定分為不連線的兩顆子樹,分別求這兩顆子樹的最長路,然後分別找到...