給出一張有向圖,每條有向邊表示一條有起始站和終止站的鐵路,通過這條路的時間為 \(t\) ,到每個站點(節點)都會停靠,每列車都有乙個發車時間點 \(x\) ,有乙個發車頻率 \(f\) ,即從第 \(x\) 分鐘開始,每 \(f\) 分鐘發一輛車,乙個乘坐花費 \(c\) ,求出 \(1-n\) 最短的交通時間並且路費盡量小。
我們很容易會想到這道題的本質就是求 \(1-n\) 的最短路,所以我們就直接考慮最短路中如何進行鬆弛操作:
我們可以分成兩種情況來考慮:
( \(j\) 為當前站點的下乙個站點)
我們在 \(dijkstra\) 中用 \(priority_queue\) 來維護 \(dis\) 最短時間,當然我們也可以用 \(pair\) 來同時維護最短時間 \(dis\) 和最小花費 \(cost\)
#include#include using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#pragma gcc optimize(2)
#pragma gcc optimize(3,"ofast","inline")
#define endl '\n'
#define pii pair,int>
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int maxn=1e6+5;
int n,m;
int e[maxn],nex[maxn],h[maxn],w[maxn],id;
int dis[maxn],cost[maxn],vis[maxn];
int c[maxn],f[maxn],s[maxn];
void add(int x,int y,int z,int xx,int yy,int zz)
void dij(int x));
while(q.size()));}}
}}int main()
dij(1);
cout<}
演算法題 最短路徑 03 最短路
在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到賽場的時候,卻是非常累的!所以現在他們想要尋找最短的從商店到賽場的路線,你可以幫助他們嗎?input 輸入包括多組資料。每組資料第一行是兩個整數n m n 100,m 10000 n...
HDU 2544 最短路 最短路裸題
time limit 1000ms memory limit 32768kb 64bit io format i64d i64u submit status description 在每年的校賽裡,所有進入決賽的同學都會獲得一件很漂亮的t shirt。但是每當我們的工作人員把上百件的衣服從商店運回到...
刷題 最短路 luogu P2384 最短路
給定n個點的帶權有向圖,求從1到n的路徑中邊權之積最小的簡單路徑。來自題解 首先考慮暴力維護,顯然極端資料就會炸裂,那麼用什麼來維護呢?由於log n m log n log m ok,這道題到此結束 我們只要把乘積轉化為對數,最後再還原就可以了,因為精度要求,所以還是記錄路徑好些。include ...