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為目的地...