time limit: 1 sec
memory limit: 128 mb
submit: 392
solved: 68 [
submit][
status][
web board]
alice想要從城市a出發到城市b,由於alice最近比較窮(不像集訓隊陳興老師是個rich second),所以只能選擇做火車從a到b。不過alice很討厭坐火車,火車上人比較多,比較擁擠,所以alice有很嚴格的要求:火車的相鄰兩站間的最大距離盡可能的短,這樣alice就可以在停站的時候下車休息一下。當然alice希望整個旅途比較短。
有多組測試資料。
每組測試資料的第一行有兩個整數n,m,a,b(n<=2000, m<=50000, n >=2, a,b<=n),其中n是城市的個數,m是城市間通火車的個數。
a,b是alice起始的城市與目的地城市,城市的標號從1開始。
接下來的m行每行三個整數u,v,w表示從u到v和從v到u有一條鐵路,距離為w, u,v<=n, w<=10000。
對於每組測試資料輸出滿足alice要求的從a到b的最短距離。
3 3 1 21 2 80
1 3 40
2 3 50
3 3 1 2
1 2 90
1 3 10
2 3 20
4 5 1 4
1 2 8
1 4 9
1 3 10
2 4 7
3 4 8
903015
#include#include#include#include#include#include#define inf 100000000
using namespace std;
const int maxn=2005;
const int maxm=50010;
int maxm,n;
int head[maxn],vis[maxn],dis[maxn];
struct seg
edge[maxm];
void addedge(int u,int v,int w)
int spfa(int a,int b,int k)}}
} }return dis[b]==inf?0:dis[b];
}int main()
// for(int i=head[1];i!=-1;i=edge[i].next)printf("1 %d %d\n",edge[i].v,edge[i].w);
int l=0,r=10001,mid;
while(1+l>1;
if(spfa(a,b,mid)) r=mid;
else l=mid;
// printf("%d %d\n",mid,dis[b]);
} printf("%d\n",spfa(a,b,r));
} return 0;
}
二分 最短路 dijkstra
洛谷p1462 通往奧格瑞瑪的道路 對於我這個只是聽過二分但是從來沒有寫過二分的人來說,看到這個題目時是懵逼的,啥是求最多一次收費的最小值,只能回頭開始學習二分,在一下幾種情況下,均可以用二分來解決。1.從有序陣列中查詢某個值。2.假定乙個解並判斷是否可行 3.最大化最小值 4.最大化平均值 這個題...
bzoj 1614 二分 最短路
題意 找一條將1號和n號 線桿連起來的路徑,其餘的 線桿並不一定要連入 網路。電信公司最終同意免費為fj鏈結k對由fj指定的 線桿。對於此外的那些 線,要求最大邊最小 明顯的二分答案,因為只要求1號和n號連起來,其他點不要求,所以跑最短路即可 對於二分出mid,我們check時,找到1號到n號的最短...
NightMare2 (二分 最短路)
time limit 5000 ms memory limit 65536 k 可憐的runningphoton又做噩夢了。但是這次跟上次不大一樣,雖然他又被困在迷宮裡,又被裝上了乙個定時炸彈,但是值得高興的是,他發現他身邊有數不清的財寶,所以他如果能帶著這些財寶並活著逃出去的話,他就發財啦。不過,...