pascal问题: 过 路 费

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:20:44
问题描述:
古时候有N个城市,编号分为1到N,每两个城市之间有且只有一条路。商人在城市之前做买卖时就会遇到一个问题,那就是每通过一条路,就要支付一定的过路费,这个过路费等于商人身上的金钱数乘以一个不大于1的小数,并且这个小数会因道路的不同而不同。商人想从城市A去到城市B,问最多可以剩下多少钱。

输入格式:
输入的第一行包含三个整数,分别是城市数N,起点城市A以及目标城市B。
接下来的N行各包含N个范围是[0, 1]的小数。矩阵第I行第J列的小数表示从城市I直接到城市J时收取的过路费与身上金钱数的比值。该矩阵是非对称的,且对角线上的数都是0。

输出格式:
输出只有一行,包含一个小数,表示从城市A到城市B后最多剩下的金钱数与初始金钱数的比值。

输入样例: 输出样例:
3 1 3
0.00 0.10 0.20
0.10 0.00 0.10
0.30 0.20 0.00 0.81

你不要考虑过路费有多少,而是考虑走完这条路剩下多少钱。
于是你把这[0,1]的小数,用1减去,发现金钱*这个值就是走过这条路剩下的钱~
易知你选择一条路,最终的钱就是这一条路上所有的[0,1]小数乘积!

这样就好做了。用dijkstra~

该不会是stoi的吧