在 n 個人中,某些人的銀行賬號之間可以互相轉賬。
這些人之間轉賬的手續費各不相同。
給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問 a 最少需要多少錢使得轉賬後 b 收到 100 元。
輸入格式
第一行輸入兩個正整數 n,m,分別表示總人數和可以互相轉賬的人的對數。
以下 m 行每行輸入三個正整數 x,y,z,表示標號為 x 的人和標號為 y 的人之間互相轉賬需要扣除 z% 的手續費 ( z<
100)。
最後一行輸入兩個正整數 a,b。
資料保證 a 與 b 之間可以直接或間接地轉賬。
輸出格式
輸出 a 使得 b 到賬 100 元最少需要的總費用。
精確到小數點後 8 位。
資料範圍
1≤n≤2000
,m≤105
輸入樣例:33
1212
3213
313輸出樣例:
103.07153164
money*x=
100 money=
100/x
要求money最小,那麼x最大即可
#include
#include
#include
#include
using
namespace std;
const
int n =
2010
;int n, m, s, t;
double g[n]
[n];
double dist[n]
;bool st[n]
;void
dijkstra()
}int
main()
cin >> s >> t;
dijkstra()
;printf
("%.8lf\n"
,100
/ dist[t]);
return0;
}
//spfa
#include
#include
#include
#include
using
namespace std;
const
int n =
2010
,m =
100000*2
+10;int n, m, s, t;
int h[n]
, e[m]
, ne[m]
, idx;
double w[m]
, dist[n]
;bool st[n]
;int q[n]
;void
add(
int a ,
int b ,
double c)
void
spfa()
}}}}
intmain()
cin >> s >> t;
spfa()
;printf
("%.8lf\n"
,100
/ dist[t]);
return0;
}
最小花費最短路
給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。多組資料 每組資料描述如下 輸入n,m,點的編號是1 n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一...
最短路 最小花費(spfa)
題目鏈結 在 n 個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後 b 收到 100 元。第一行輸入兩個正整數 n,m,分別表示總人數和可以互相轉賬的人的對數。以下m行每行輸入三個正整數...
最小花費 Dijkstra
原題鏈結傳送門 d es crip tion description descri ptio n在n個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後b收到100元。i np ut inp...