最短路 最小花費(spfa)

2021-10-24 12:23:14 字數 901 閱讀 1332

題目鏈結

在 n 個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後 b 收到 100 元。

第一行輸入兩個正整數 n,m,分別表示總人數和可以互相轉賬的人的對數。

以下m行每行輸入三個正整數 x,y,z,表示標號為 x 的人和標號為 y 的人之間互相轉賬需要扣除 z% 的手續費 (z < 100)。

最後一行輸入兩個正整數 a,b。資料保證 a 與 b 之間可以直接或間接地轉賬。

輸出 a 使得 b 到賬 100 元最少需要的總費用。精確到小數點後 8 位。

輸入3 3

1 2 1

2 3 2

1 3 3

1 3輸出

103.07153164

1 <= n <= 2000,m <= 100000

#include

using

namespace std;

const

int maxn=

1e5+5;

int vis[maxn]

,n,m;

double dis[maxn]

;struct node

;vector f[maxn]

;void

spfa

(int k)}}

}int

main()

);f[y]

.push_back()

;}cin>>a>>b;

spfa

(a);

printf

("%.8lf\n"

,100

/dis[b]);

return0;

}

最小花費( 最短路Dijkstra或SPFA)

在 n 個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問 a 最少需要多少錢使得轉賬後 b 收到 100 元。輸入格式 第一行輸入兩個正整數 n,m,分別表示總人數和可以互相轉賬的人的對數。以下 m 行每行輸入三...

最小花費最短路

給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。多組資料 每組資料描述如下 輸入n,m,點的編號是1 n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為d,花費為p。最後一...

1230 最小花費(spfa)

1230 最小花費 時間限制 1 sec 記憶體限制 128 mb 題目描述 在n個人中,某些人的銀行賬號之間可以互相轉賬。這些人之間轉賬的手續費各不相同。給定這些人之間轉賬時需要從轉賬金額裡扣除百分之幾的手續費,請問a最少需要多少錢使得轉賬後b收到100元。輸入第一行輸入兩個正整數n,m,分別表示...