LOL新英雄皮肤弹丸天使点击就送

两种做法:

1.边的权值为手续费z,从b向a跑最短路,边跑边处理答案

2.边的权值为汇率,从a向b跑最短路,边跑边处理答案

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<queue>
  4. using namespace std;
  5. queue<double>q;
  6. double path[],n,m,z,dis[],vis[];
  7. int x,y,A,B,k;
  8. struct node{
  9. int u,v,nxt;
  10. double w;
  11. }edge[];
  12. void add(int xx,int yy,double zz)
  13. {
  14. edge[++k].u =xx;
  15. edge[k].v =yy;
  16. edge[k].w =-zz/;
  17. edge[k].nxt =path[xx];
  18. path[xx]=k;
  19. }
  20. int main()
  21. {
  22. scanf("%lf%lf",&n,&m);
  23. for(int i=;i<=m;++i)
  24. {
  25. scanf("%d%d%lf",&x,&y,&z);
  26. add(y,x,z);add(x,y,z);
  27. }
  28. scanf("%d%d",&A,&B);
  29. for(int i=;i<=n;++i)
  30. dis[i]=0x3fff;
  31. dis[B]=;vis[B]=;
  32. q.push(B);
  33. while(!q.empty())
  34. {
  35. int now=q.front() ;
  36. q.pop() ;
  37. vis[now]=;
  38.  
  39. for(int i=path[now];i;i=edge[i].nxt )
  40. {
  41. if(dis[edge[i].v]>dis[edge[i].u]/edge[i].w)
  42. {
  43. dis[edge[i].v]=dis[edge[i].u]/edge[i].w;
  44. if(!vis[edge[i].v])
  45. {
  46. q.push(edge[i].v );
  47. vis[edge[i].v]=;
  48. }
  49. }
  50. }
  51. }
  52. printf("%.8lf",dis[A]);
  53. return ;
  54. }

做法1

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<queue>
  4. #include<cstring>
  5. using namespace std;
  6. const int N=,M=1e6;
  7. struct node{
  8. int u,v,nxt;
  9. double w;
  10. }e[M<<];
  11. int n,m,num,s,t,head[N];
  12. double dis[N];
  13. bool vis[N];
  14. queue<int>q;
  15. int qread()
  16. {
  17. int x=;
  18. char ch=getchar();
  19. while(ch<'' || ch>'')ch=getchar();
  20. while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
  21. return x;
  22. }
  23. void Add(int u,int v,int w)
  24. {
  25. e[++num].u=u;
  26. e[num].v=v;
  27. e[num].w=1.0-w/100.0;
  28. e[num].nxt=head[u];
  29. head[u]=num;
  30. }
  31. void SPFA()
  32. {
  33. for(int i=;i<=n;++i)
  34. dis[i]=100000.0;
  35. dis[t]=;vis[t]=;
  36. q.push(t);
  37. int u,v;
  38. while(!q.empty())
  39. {
  40. u=q.front();q.pop();
  41. vis[u]=;
  42. for(int i=head[u];i;i=e[i].nxt)
  43. {
  44. v=e[i].v;
  45. if(dis[v]>dis[u]/e[i].w)
  46. {
  47. dis[v]=dis[u]/e[i].w;
  48. if(!vis[v])
  49. {
  50. vis[v]=;
  51. q.push(v);
  52. }
  53. }
  54. }
  55. }
  56. }
  57. int main()
  58. {
  59. scanf("%d%d",&n,&m);
  60. int u,v,w;
  61. for(int i=;i<=m;i++)
  62. {
  63. u=qread();v=qread();w=qread();
  64. Add(u,v,w);
  65. Add(v,u,w);
  66. }
  67. scanf("%d%d",&s,&t);
  68. SPFA();
  69. printf("%.8lf\n",dis[s]);
  70. return ;
  71. }

做法2

luoguP1576 最小花费的更多相关文章

  1. 把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend

    //把一个序列转换成严格递增序列的最小花费 CF E - Sonya and Problem Wihtout a Legend //dp[i][j]:把第i个数转成第j小的数,最小花费 //此题与po ...

  2. 把一个序列转换成非严格递增序列的最小花费 POJ 3666

    //把一个序列转换成非严格递增序列的最小花费 POJ 3666 //dp[i][j]:把第i个数转成第j小的数,最小花费 #include <iostream> #include < ...

  3. 第四届CCF软件能力认证(CSP2015) 第五题(最小花费)题解

    [问题描述] C国共有$n$个城市.有$n-1$条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达.小R来到C国旅行,他共规划了$m$条旅行的路线, 第$i$条旅行路线的起点是$s_i$,终 ...

  4. 九度OJ 1086 最小花费--动态规划

    题目地址:http://ac.jobdu.com/problem.php?pid=1086 题目描述: 在某条线路上有N个火车站,有三种距离的路程,L1,L2,L3,对应的价格为C1,C2,C3.其对 ...

  5. hdoj 3072 Intelligence System【求scc&&缩点】【求连通所有scc的最小花费】

    Intelligence System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  6. ccf 201503-5 最小花费 这题交上去只有10分嗨!求大佬的题解啊

    问题描述 C国共有n个城市.有n-1条双向道路,每条道路连接两个城市,任意两个城市之间能互相到达.小R来到C国旅行,他共规划了m条旅行的路线,第i条旅行路线的起点是si,终点是ti.在旅行过程中,小R ...

  7. [LeetCode] Minimum Cost to Merge Stones 混合石子的最小花费

    There are N piles of stones arranged in a row.  The i-th pile has stones[i] stones. A move consists ...

  8. 1344:【例4-4】最小花费 dijkstra

    1344:[例4-4]最小花费 Dijkstra (1)a [ i ] [ j ] 存转账率(..转后所得率..) (2)dis [ i ] 也就是 a [ 起点 ] [ i ] (3)f [ i ] ...

  9. PTA 7-1 畅通工程之局部最小花费问题(35 分)

    7-1 畅通工程之局部最小花费问题(35 分) 某地区经过对城镇交通状况的调查,得到现有城镇间快速道路的统计数据,并提出“畅通工程”的目标:使整个地区任何两个城镇间都可以实现快速交通(但不一定有直接的 ...

随机推荐

  1. Linux新装系统简单指南

    也许更好的阅读体验 换源 1. 备份原来的源 sudo cp /etc/apt/sources.list /etc/apt/sources_init.list 2.更换源 先用\(gedit\)打开文 ...

  2. Oracle数据库基本知识-原理,实例,表空间,用户,表

    1.数据库原理及sql 数据库:是人们存放数据,访问数据,操作数据的存储仓库. DB:数据库,按存储结构来组织,存储和管理的数据仓库 DBMS:数据库管理系统,管理数据库的软件 SQL:结构化查询语言 ...

  3. Scala 系列(三)—— 流程控制语句

    一.条件表达式if Scala 中的 if/else 语法结构与 Java 中的一样,唯一不同的是,Scala 中的 if 表达式是有返回值的. object ScalaApp extends App ...

  4. feign.FeignException: status 400 reading

    feign.FeignException: status 400 reading : 请求方调用报错: 服务方被调用报错: 用fegin给redis设置缓存时报错,刚好 卡到8k这个临界点 ,就一直报 ...

  5. Matlab外观模式

    外观模式(Facade Pattern)隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口.本文以计算机为例,用Matlab代码实现外观模式.计算机包括CPU.内存以及硬盘等这些部件.用户 ...

  6. 【开发工具】- Atom下载及安装

    原文地址:https://www.jianshu.com/p/c112f024e0ab

  7. Java 之 MyBatis(一)入门

    一.Mybatis 框架概述 (1)mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动.创建连接.创 ...

  8. Oracle 12c数据库的安装

    Oracle一路走来,不知不觉中已经到了12c,最近要用这个新版本了,从oracle的官网上注册了个用户,下载了win版本64位的先试一下. (1)下载安装包 a. 到官网进行下载需要先注册一个Ora ...

  9. Vue项目整体架构记要

    此文记录初次学习Vue的一些记要,可做为参考,导图有些生涩,故意不再加以修复完善,以持初心!

  10. Others-SAP hybris 介绍

    https://wenku.baidu.com/view/6bf4d3a73169a4517623a33d.html