真是气skr人。。没把d[]换成double。。。de了一上午的bug//

记得用G++提交啊


题目链接:http://poj.org/problem?id=1860

题意:告诉你n个点,m条路。起始点s,还有初始金额money。每条路表示从a->b的汇率和佣金以及b->a的汇率和佣金。你在该点所得是(本金-佣金)*汇率。问你这个人能不能赚钱。

题解:spfa套一下//。记得d[]换成double。具体的看看代码。QWQ。

代码:

  1. #include<iostream>
  2. #include<stack>
  3. #include<vector>
  4. #include<queue>
  5. #include<algorithm>
  6. #include<cstdio>
  7. using namespace std;
  8. const int maxn = ;
  9.  
  10. struct node{
  11. int to;
  12. double r;
  13. double c;
  14. };
  15.  
  16. vector< node > e[maxn];
  17.  
  18. int n,m,num;
  19. double money;
  20. double d[maxn];
  21. int inq[maxn];
  22.  
  23. bool spfa(int s){
  24. for(int i = ; i <= n ;i++){
  25. inq[i] = d[i] = ;
  26. }
  27. queue<int>Q;
  28. Q.push(s);
  29. d[s] = money;
  30. inq[s] = ;
  31. while( !Q.empty() ){
  32. int now = Q.front();
  33. Q.pop();
  34. inq[now] = ;
  35. for(int i = ; i < e[now].size() ; i++){
  36. double rate = e[now][i].r;
  37. double commis = e[now][i].c;
  38. int v = e[now][i].to;
  39.  
  40. if(d[v] < (d[now] - commis) * rate){
  41. d[v] = (d[now] - commis) * rate;
  42. if(inq[v] == ){
  43. inq[v] = ;
  44. Q.push(v);
  45. }
  46. }
  47.  
  48. if(d[s] > money){
  49. return true;
  50. }
  51. }
  52.  
  53. }
  54. return false;
  55. }
  56.  
  57. int main() {
  58. scanf("%d%d%d%lf",&n,&m,&num,&money);
  59. int x,y;
  60. double r,c;
  61. while(m--){
  62. scanf("%d%d%lf%lf",&x,&y,&r,&c);
  63. e[x].push_back((node){y,r,c});
  64. scanf("%lf%lf",&r,&c);
  65. e[y].push_back((node){x,r,c});
  66. }
  67. if(spfa(num))
  68. cout<<"YES"<<endl;
  69. else
  70. cout<<"NO"<<endl;
  71.  
  72. return ;
  73. }

【POJ】1860 Currency Exchange的更多相关文章

  1. 最短路(Bellman_Ford) POJ 1860 Currency Exchange

    题目传送门 /* 最短路(Bellman_Ford):求负环的思路,但是反过来用,即找正环 详细解释:http://blog.csdn.net/lyy289065406/article/details ...

  2. POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环)

    POJ 1860 Currency Exchange / ZOJ 1544 Currency Exchange (最短路径相关,spfa求环) Description Several currency ...

  3. POJ 1860 Currency Exchange 最短路+负环

    原题链接:http://poj.org/problem?id=1860 Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Tota ...

  4. POJ 1860 Currency Exchange + 2240 Arbitrage + 3259 Wormholes 解题报告

    三道题都是考察最短路算法的判环.其中1860和2240判断正环,3259判断负环. 难度都不大,可以使用Bellman-ford算法,或者SPFA算法.也有用弗洛伊德算法的,笔者还不会SF-_-…… ...

  5. 【POJ】1704 Georgia and Bob(Staircase Nim)

    Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, ...

  6. 【POJ】1067 取石子游戏(博弈论)

    Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...

  7. POJ 1860 Currency Exchange【bellman_ford判断是否有正环——基础入门】

    链接: http://poj.org/problem?id=1860 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...

  8. POJ 1860 Currency Exchange【SPFA判环】

    Several currency exchange points are working in our city. Let us suppose that each point specializes ...

  9. POJ 1860——Currency Exchange——————【最短路、SPFA判正环】

    Currency Exchange Time Limit:1000MS     Memory Limit:30000KB     64bit IO Format:%I64d & %I64u S ...

随机推荐

  1. 剑指offer——70n个骰子的点数

    题目: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值出现的概率. 题解: 使用两个数组存每次投的点数 void theProbability(const int ...

  2. kafka相关业务必会操作命令整理

    参考:https://kafka.apache.org 服务相关命令 1.启动/停止zk > bin/zookeeper-server-start.sh config/zookeeper.pro ...

  3. Spring IOC源码分析(二):Bean工厂体系结构设计

    一. 概述 Spring容器通常指的是ApplicationContext的体系结构设计,即整个Spring框架的IOC功能,是通过ApplicationContext接口实现类来提供给应用程序使用的 ...

  4. 常用css3属性的ie兼容查看

    记录一下关于css3的各种常用属性对ie各版本浏览器的兼容程度: 最低可兼容ie7 最低可兼容ie8 最低可兼容ie9 最低可兼容ie10 position:fixed clip E:first-le ...

  5. 45-Ubuntu-用户管理-10-chmod修改文件|目录权限

    1.将a.py的权限修改为u=rwx, g=r-x, o=r--. 2.将目录test及子目录和文件权限修改为u=rwx, g=rwx, o=r-x.

  6. 拓展KMP求回文串

    题目:hdu3613: 题意:有26字母对应的价值,然后给出以个串,把它分成两段字串,如果字串是回文串,串的价值就是每个字符和,不是就为0.求最大价值. 博客 分析:拓展KMP的应用求回文字串. #i ...

  7. 使用Kettle的命名参数动态执行作业

    关于如何根据传入的不同参数,达到动态运行作业的目的,这里不介绍.只提供一个思路,就是不同的调度进程调度同一个Kettle文件时,传入了不同的参数,从而得到不同的数据. 如下图所示: 1. 先设置参数名 ...

  8. (Struts2学习系列四)Struts2指定配置文件

    我们的每个action都在struts.xml里配置的话,就会出现很多的xml语句,单单一个struts.xml就会变得很大,所以我们会在struts.xml里使用include引入其他的.xml文件 ...

  9. CSIC_716_20191206【并发编程理论基础】

    进程:正在执行的一个过程,进程是对正在执行过程的一个抽象.区别于程序, 进程的三种状态:  进程是动态的. 就绪态ready:   进程具备运行状态,等待操作系统分配处理器 运行状态running:进 ...

  10. C/C++各个周期的学习

    C/C++ 程序的生命周期 编写时: 要点:业务,数据结构,控制解耦:健壮:易修改:清晰简单无歧义:易重用:低耦合高内聚:易链接:速度快(时间复杂度,空间复杂度,cache友好): 书籍:<c+ ...