链接:poj 1860

题意:给定n中货币。以及它们之间的税率。A货币转化为B货币的公式为 B=(V-Cab)*Rab,当中V为A的货币量,

求货币S通过若干此转换,再转换为原本的货币时是否会添加

分析:这个题就是推断是否存在正权回路。能够用bellman-ford算法,只是松弛条件相反

也能够用SPFA算法,推断经过转换后,转换为原本货币的值是否比原值大、、、

bellman-ford    0MS

#include<stdio.h>
#include<string.h>
struct stu
{
int a,b;
double r,c;
}edge[205];
double v,dis[105];
int s;
int bellmanford(int n,int m)
{
int i,j,flag=0;
memset(dis,0,sizeof(dis));
dis[s]=v;
for(i=1;i<=n-1;i++)
for(j=1;j<=m;j++)
if(dis[edge[j].a]&&(dis[edge[j].a]-edge[j].c)*edge[j].r>dis[edge[j].b])
dis[edge[j].b]=(dis[edge[j].a]-edge[j].c)*edge[j].r;
for(j=1;j<=m;j++)
if(dis[edge[j].a]&&(dis[edge[j].a]-edge[j].c)*edge[j].r>dis[edge[j].b]){
flag=1;
break;
}
return flag;
}
int main()
{
int i,j,l,r,n,m,flag;
while(scanf("%d%d%d%lf",&n,&m,&s,&v)!=EOF){
j=1;
for(i=1;i<=m;i++){
scanf("%d%d",&l,&r);
scanf("%lf%lf",&edge[j].r,&edge[j].c);
edge[j].a=l;
edge[j].b=r;
j++;
edge[j].a=r;
edge[j].b=l;
scanf("%lf%lf",&edge[j].r,&edge[j].c);
j++;
}
flag=bellmanford(n,2*m);
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

SPFA+邻接表  16MS

#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
struct stu
{
int a,b;
double r,c;
}edge[205];
double v,dis[105];
int s,first[205],next[205],vis[105];
int SPFA(int n,int m)
{
int i,pos;
queue<int> q;
memset(dis,0,sizeof(dis));
memset(vis,0,sizeof(vis));
dis[s]=v;
q.push(s);
vis[s]=1;
while(!q.empty()){
pos=q.front();
q.pop();
vis[pos]=0;
i=first[pos];
while(i!=-1){
if((dis[pos]-edge[i].c)*edge[i].r>dis[edge[i].b]){
dis[edge[i].b]=(dis[pos]-edge[i].c)*edge[i].r;
if(!vis[edge[i].b]){
q.push(edge[i].b);
vis[edge[i].b]=1;
}
}
i=next[i];
}
if(dis[s]>v)
return 1;
}
return 0;
}
int main()
{
int i,j,l,r,n,m,flag;
while(scanf("%d%d%d%lf",&n,&m,&s,&v)!=EOF){
j=1;
for(i=1;i<=m;i++){
scanf("%d%d",&l,&r);
scanf("%lf%lf",&edge[j].r,&edge[j].c);
edge[j].a=l;
edge[j].b=r;
j++;
edge[j].a=r;
edge[j].b=l;
scanf("%lf%lf",&edge[j].r,&edge[j].c);
j++;
}
memset(first,-1,sizeof(first));
for(i=1;i<=2*m;i++){
next[i]=first[edge[i].a];
first[edge[i].a]=i;
}
flag=SPFA(n,2*m);
if(flag)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

poj 1860 Currency Exchange (SPFA、正权回路 bellman-ford)的更多相关文章

  1. POJ 1860 Currency Exchange (SPFA松弛)

    题目链接:http://poj.org/problem?id=1860 题意是给你n种货币,下面m种交换的方式,拥有第s种货币V元.问你最后经过任意转换可不可能有升值.下面给你货币u和货币v,r1是u ...

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

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

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

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

  4. HDU - 1317 ~ SPFA正权回路的判断

    题意:有最多一百个房间,房间之间连通,到达另一个房间会消耗能量值或者增加能量值,求是否能从一号房间到达n号房间. 看数据,有定5个房间,下面有5行,第 iii 行代表 iii 号 房间的信息,第一个数 ...

  5. 图论 --- spfa + 链式向前星 : 判断是否存在正权回路 poj 1860 : Currency Exchange

    Currency Exchange Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 19881   Accepted: 711 ...

  6. POJ 1860 Currency Exchange(最短路&spfa正权回路)题解

    题意:n种钱,m种汇率转换,若ab汇率p,手续费q,则b=(a-q)*p,你有第s种钱v数量,问你能不能通过转化让你的s种钱变多? 思路:因为过程中可能有负权值,用spfa.求是否有正权回路,dis[ ...

  7. (简单) POJ 1860 Currency Exchange,SPFA判圈。

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

  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(Bellman-Ford,SPFA解单源最短路径问题)

    一.题意 有多个货币交易点,每个只能互换两种货币,兑换的汇率不同,并收取相应的手续费.有N种货币,假定你拥有第S中,数量为V,有M个兑换点.问你能不能通过兑换操作使你最后拥有的S币比起始的时候多. 二 ...

随机推荐

  1. 使用SQLPLUS创建用户名和表空间

    用sqlplus为oracle创建用户和表空间用sqlplus为oracle创建用户和表空间用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, ...

  2. freeMarker遍历map的正确方式

    假设selectDateModel 是我们后台返回的map<String, String>; <#list selectDateModel?keys as key> <o ...

  3. 开篇-我眼中的FPGA

    既然是开篇,那就来闲话叨一叨FPGA吧. 掰掰指头,结识FPGA估计有5年多.作为嵌入式工程师,每天的日常充斥着ARM.DSP.操作系统.通讯.总线等耳熟能详的词汇,徜徉其中不能自拔,而这其中,自觉最 ...

  4. TweenMax动画库学习

    之前在做HTML5移动端开发的时候,用的都是Animate.css,这个插件封装的的确很好,但是在做一些缓动方面的动画,它也有一定的不足之处,比如手要写一个连续的动画,需要不停的去重复写函数,使得代码 ...

  5. 谈谈如何用eoLinker管理各类API接口及分享API接口管理小技巧教程

    在前后端分离的开发模式下,前后端往往需要接口文档来进行交互.我的上一篇随笔中已经写到用传统的文档写接口时,由于需求经常变动,接口文档也会随之变动.一开始,某接口信息已经写入文档,但后期因为需求变动,发 ...

  6. 《Linux命令行与shell脚本编程大全》第十二章 使用结构化命令

    许多程序要就对shell脚本中的命令施加一些逻辑控制流程. 结构化命令允许你改变程序执行的顺序.不一定是依次进行的 12.1 使用if-then语句 如下格式: if command then     ...

  7. iOS开发经验总结

    总结了几个月的东西终于能和大家分享了,不多说,直接看东西! 1.禁止手机睡眠 1 [UIApplication sharedApplication].idleTimerDisabled = YES; ...

  8. ExtJS+Handler入门显示

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.c ...

  9. Spring框架——IOC依赖注入

    本来想把IOC和AOP一起介绍的,但是AOP内容太多了,所以就分开了,最后的结果就是这一篇只剩下一点点了.这不是第一次写关于IOC的文章了,之前写过Java反射,Java注解,也写过通过XML解析实现 ...

  10. 去培训机构参加IT培训值不值

    近几年,IT培训机构可谓是琳琅满目,稂莠不齐.培训Java的,培训PHP的,培训大数据的等等吧,不一而足. 自己也算是IT技术圈子待了好多年了,面试过一些机构培训出来的学生,也有几个好哥们在培训机构做 ...