最短路 二維 Roads

2021-09-24 04:01:44 字數 1433 閱讀 8000

description

城市中有r條有向馬路,n個馬路連線點,通過每條馬路都要花去一定費用。你現在在編號為1的連線點 

手裡有k元錢,要去n號連線點的最短路徑的長度是多少?途中經過道路的花費不能超過k。注意:兩個 

馬路連線點間可能有多條馬路 

input

第一行,k(0 <= k <= 10000) 

第二行,n(2 <= n <= 100) 

第三行,r(1 <= r <= 10000 

以下r行 

x y l t 從x到y的馬路,長度l(1<=每條馬路的長度<=100),花費t(0<=每條馬路的費用<=100) 

output

滿足條件最短路長度 

sample input

567

1 2 2 3

2 4 3 3

3 4 2 4

1 3 4 1

4 6 2 1

3 5 2 0

5 4 3 2

sample output

11

hint

你可以從1號點走到3號,再走到5號,再走到4號,再走到6號

分析

這個題乍一看是個最短路,再一看發現不對,怎麼有兩種花費。。

對於這種題,本蒟蒻的做法非常簡單清晰,暴搜!

注意細節處理就好

**

#includeusing namespace std;

struct node

node (int xx, int ll, int tt)

};int k, n, r;

bool vis[110];

int dp[110][10010];

int ans = int_max;

int suml, sumc;

vector e[110];

void dfs(int st)

for(int i = 0; i < e[st].size(); i++)

return;

}int main()

for (int i = 0; i < 110; i++)

}suml = 0, sumc = 0;

vis[1] = true;

dfs(1);

if (ans == int_max) puts("-1");

else printf("%d\n", ans);

return 0;

}

值得一提的是,在洛谷上有一道這題的近親

題目鏈結

感興趣的朋友可以切一切這道題qaq

二維最短路

三元組用map int,int set 儲存 可以通過前繼pre和當前節點u找到下乙個v,使得 pre,u,v 在三元組中的節點 include include include include include include include include include define mem a,...

Fishmonger SPOJ 二維最短路

乙個圖中,對於每一條邊有兩個權值 路費和時間,我們要找一條從源點出發到終點的路,在這條路的時間不超過給定時間的基礎上,找到路費最少的路。如果按照普通的最短路,會因為有乙個時間的限制而找不到正確的解。找不到正確的解的原因就是對於每個點只能存乙個時間,然而我們可能在多個不同時間到達乙個點,不一定哪個時間...

二維最短路 時間優化

輸入的第一行包含整數k,0 k 10000,這是bob在路上可以花費的最大硬幣數。第二行包含整數n,2 n 100,即城市總數。第三行包含整數r,1 r 10000,即道路總數。以下r行中的每一行通過指定整數s d l和t來描述一條道路,這些整數由單個空白字元分隔 s為源城市,1 s n d為目的地...