1230: 最小花费
时间限制: 1 Sec 内存限制: 128 MB

题目描述
在n个人中,某些人的银行账号之间可以互相转账。这些人之间转账的手续费各不相同。给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元。

输入
第一行输入两个正整数n,m,分别表示总人数和可以互相转账的人的对数。(0<n<=2000)
以下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
提示
AC_code:
/*
设起点x,终点y,x->y过程中最小打了(1-dis[y])折扣;
ans *dis[y] = 100.0,
ans= 100.0/dis[y],
dis[y]越大,ans越小
所以spfa松弛过程中要使dis[…]尽量大
*/

#include <bits/stdc++.h>
using namespace std;
struct edge
{int e;double val;edge(int to,double va){e = to;val = va;}
};
double dis[2005];
int isIn[2005];
vector<edge>v[2005];
double ans;
void spfa(int s,int e)
{memset(dis,0,sizeof(dis));dis[s] = 1;queue<int>q;q.push(s);isIn[s] = 1;while(!q.empty()){int k = q.front();q.pop();isIn[k] = 0;for(int i = 0; i < v[k].size(); i++){int to = v[k][i].e;double pr = v[k][i].val;if(dis[to] < dis[k]*pr){dis[to] = dis[k]*pr;if(!isIn[to]){isIn[to] = 1;q.push(to);}}}}
}
int main()
{int n,m;cin>>n>>m;int x,y,p;double t;for(int i = 0; i < m; i++){cin>>x>>y>>p;t = (100-p)/100.0;v[x].push_back(edge(y,t));v[y].push_back(edge(x,t));}cin>>x>>y;spfa(x,y);ans = 100.0/dis[y];cout<<setprecision(8);cout<<fixed<<ans<<endl;return 0;
}

1230: 最小花费(spfa)相关推荐

  1. SPFA 跑得快,跑得快。最小花费问题

    1443: 最小花费 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100 ...

  2. 【例4-4】最小花费

    [例4-4]最小花费 链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1344 时间限制: 1000 ms         内存限制: 65536 ...

  3. 信息学奥赛一本通 1344:【例4-4】最小花费 | 洛谷 P1576 最小花费

    [题目链接] ybt 1344:[例4-4]最小花费 洛谷 P1576 最小花费 [题目考点] 1. 图论 单源最短路径 时间复杂度: Dijkstra算法: O(V2)O(V^2)O(V2) Dij ...

  4. OIBH杯第三次普及组模拟赛T2 最小花费

    T2: 最小花费 题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到 ...

  5. hdu4122 制作月饼完成订单的最小花费

    题意:       有一个加工厂加工月饼的,这个工厂一共开业m小时,2000年1月1日0点是开业的第一个小时,每个小时加工月饼的价钱也不一样,然后每个月饼的保质期都是t天,因为要放在冰箱里保存,所以在 ...

  6. ZOJ3715 竞选班长求最小花费

    题意:       有n个小朋友竞选班长,一号想当班长,每个人都必须选择一个人当班长,并且不可以选择自己,并且每个人都有一个权值ai,这个权值就是如果1想让这个人改变主意选择自己当班长就得给他ai个糖 ...

  7. LeetCode-动态规划基础题-746. 使用最小花费爬楼梯

    描述 746.使用最小花费爬楼梯 数组的每个下标作为一个阶梯,第 i 个阶梯对应着一个非负数的体力花费值 cost[i](下标从 0 开始). 每当你爬上一个阶梯你都要花费对应的体力值,一旦支付了相应 ...

  8. LeetCode Algorithm 746. 使用最小花费爬楼梯

    746. 使用最小花费爬楼梯 Ideas 首先确定题目类型,爬楼梯问题,并且给定了状态转移的限制,其实就已经可以确定状态转移方程了. 然后题目说可以从下标为0或下标为1的台阶开始爬,所以我们可以定义两 ...

  9. 算法题目——使用最小花费爬楼梯(动态规划)

    题目链接:746.使用最小花费爬楼梯 方法:动态规划 假设数组cost的长度为n,则n个阶梯分别对应下标0到n- 1,楼层顶部对应下标n,问题等价于计算达到下标n的最小花费.可以通过动态规划求解. 创 ...

最新文章

  1. CoreLocation+MapKit系统定位(含坐标以及详细地址)
  2. PAT:1042. Shuffling Machine (20) AC
  3. 基于Accord.Audio和百度语言识别
  4. 在使用 Elasticsearch 时要注意什么?
  5. grub4dos命令引导自定义映像_电脑C盘过小,教你在任意磁盘下安装windows系统,应用引导即可...
  6. Android文件夹占用空间分析,关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析...
  7. 虚拟机安装windows xp系统时,找不到网络连接
  8. 软件测试方法——静态测试与动态测试
  9. 任正非:华为留不住人才是我的痛!
  10. PDF转图片怎样转换?有哪些好用PDF转换的方法?
  11. 莫国防病毒(win32.mgf)源代码
  12. C#使用极光短信发送手机验证码
  13. 西红柿助手的安装使用及其设置(Visual Assist X)
  14. pubg体验服服务器维护,简单1招,教你快速获得《Pubg Mobile》体验服“邀请码”!...
  15. 【BZOJ-1194】潘多拉的盒子 拓扑排序 + DP
  16. 3DsMax—木梳子制作
  17. [P1373]小a和uim之大逃离
  18. 「分布式架构」最终一致性:反熵
  19. c语言将字符串写入文件
  20. Python处理第一类切比雪夫多项式

热门文章

  1. Flink异步io应用场景之流表join维表
  2. mybatis 处理参数ListString[]
  3. 老码农冒死揭开行业黑幕:如何编写无法维护的代码
  4. web python php golang_python go 语言完成最简单的web应用
  5. 一对多分页查询mysql编写_一对多分页的SQL到底应该怎么写?
  6. 相机录像出现花屏_[Unity3D]花屏问题解决
  7. pyppeteer有java版本吗_Pyppeteer中文文档_序言_安装_基本使用及注意事项
  8. Collections.toMap 报错 空指针 key重复
  9. [Linux]F5负载均衡器
  10. 电子版,材料获取说明