洛谷 P1756 最小花費

2022-02-11 17:24:05 字數 2618 閱讀 8132

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

輸入格式:

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

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

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

輸出格式:

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

輸入樣例#1:

3 3                                     

1 2 1

2 3 2

1 3 3

1 3

輸出樣例#1:

103.07153164
1<=n<=2000

ac**:

n^2都能過,無語。。

1 #include2 #include3

#define maxn 2001

4#define inf 99999

5using

namespace

std;

6int

n,m,a,b;

7double

m[maxn][maxn];

8int

main()924

25 cin>>a>>b;

26 a--; b--;

27//

dijkstra

28double dis[maxn]; //

dis i:money needed to trans 100 to i

29bool

book[maxn];

30 book[b]=true;31

for (i=0;i)

3236

for (j=0;j)

3746 book[nmin]=true; //

record in book

47for (i=0;i)

48if (min/m[nmin][i]//

relax

49 dis[i]=min/m[nmin][i];50}

51 printf("

%.8lf

",dis[a]);

52return0;

53 }

80分**存檔:

1 #include2 #include3 #include4 #include5

#define n 2005

6using

namespace

std;

7int

n,m,s,e,head[n],ei;

8double

dis[n];

9bool

exist[n];

10struct

nodee[n*25

];14

void add_edge(int u,int v,int

x)19 queueq;

20void

spfa()34}

35}36}

37}38int

main()

3946 scanf("

%d%d

",&e,&s);

47spfa();

48 printf("

%.8lf

",dis[e]);

49return0;

50 }

剛開始用100往回乘(1+e[i].w)全錯了,後來改成除了。。

思路:建立無向圖(剛開始建成有向圖了。。),跑最短路。。

1 #include2 #include3 #include4 #include5

using

namespace

std;

6int n,m,s,e,head[15000

],ei;

7double dis[2100];8

bool exist[2010];9

struct

nodee[20000

];13

void add_edge(int u,int v,int

x)18 queueq;

19void

spfa()33}

34}35}

36}37int

main()

3845 scanf("

%d%d

",&e,&s);

46spfa();

47 printf("

%.8lf

",dis[e]);

48return0;

49 }

這樣寫不知道為什麼結果總是整數部分正確,小數部分全是0,一時沒看出**錯了

洛谷P1576 最小花費

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

洛谷 P1576 最小花費

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

P1576 最小花費 洛谷

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