精明的小r每每開車出行總是喜歡走最快路線,而不是最短路線.很明顯,每條道路的限速是小r需要考慮的關鍵問題.不過有一些限速標誌丟失了,於是小r將不知道能開多快.不過有乙個合理的方法是進入這段道路時不改變速度行駛.你的任務就是計算從小r家(0號路口)到d號路口的最快路線.
現在你得到了這個城市的地圖,這個地圖上的路都是單向的,而且對於兩個路口a和b,最多只有一條道路從a到b.並且假設可以瞬間完成路口的轉彎和加速.
第一行是三個整數n,m,d(路口數目,道路數目,和目的地). 路口由0...n-1標號
接下來m行,每行描述一條道路:有四個整數a,b,v,l,(起始路口,到達路口,限速,長度) 如果v=0說明這段路的限速標誌丟失.
開始時你位於0號路口,速度為70.
僅僅一行,按順序輸出從0到d經過的城市.保證最快路線只有一條.
6 15 1
0 1 25 68
0 2 30 50
0 5 0 101
1 2 70 77
1 3 35 42
2 0 0 22
2 1 40 86
2 3 0 23
2 4 45 40
3 1 64 14
3 5 0 23
4 1 95 8
5 1 0 84
5 2 90 64
5 3 36 40
0 5 2 3 1
【資料範圍】
30% n<=20
100% 2<=n<=150;0<=v<=500;1<=l<=500
題解:
記錄一下到點x的速度。
spfa的時候分有限速和沒限速討論一下即可。
可以看成是拆點spfa.
**:
#include#include#include#define n 200
#define m 40000
#define inf 2100000000
using namespace std;
int n,m,t,cnt,x,y,v,l,f[n][510],a[n],next[m<<1],point[n];
double dis[n][510],ans;
pairq[n*500*10],pre[n][510];
struct usee[m<<1];
void add(int x,int y,int v,int l)
void spfa()}}
else }}
} }}
void out(int x,int y)
int main()
spfa();ans=inf;
for (int i=1;i<=500;i++)
if (dis[t][i]<=ans)
out(t,x);
}
BZOJ 3245 最快路線
bzoj的source已經暴露了一切 直接上spfa,對於乙個點記錄到達它時的速度,然後進行轉移,基本上就是乙個分層圖的思路吧。因為要輸出方案,多開乙個陣列記錄就行了。include include include include include include using namespace st...
bzoj3245 最快路線
精明的小r每每開車出行總是喜歡走最快路線,而不是最短路線.很明顯,每條道路的限速是小r需要考慮的關鍵問題.不過有一些限速標誌丟失了,於是小r將不知道能開多快.不過有乙個合理的方法是進入這段道路時不改變速度行駛.你的任務就是計算從小r家 0號路口 到d號路口的最快路線.現在你得到了這個城市的地圖,這個...
85 8萬!吉利路特斯全新跑車最快2023年提車
作為一家曾與法拉利 保時捷起名的英國超跑品牌,路特斯自從被吉利收購後重新回到人們的視線,不僅全球總部落地武漢,並且還發布了多款新車。日前,路特斯品牌宣布,旗下全新跑車emira因為新冠疫情影響和產能受限,自2021年11月26日中午12點起,新增訂單交付預計從2023年開始。也就是說,即便現在立刻訂...