链接: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. thinkphp碰到的一些小问题

    1. 生成的html自动被去掉换行和空格,压缩挤到一起了. 解决: 开启debug即可,在入口文件增加 define("APP_DEBUG",true); 2. 添加mysql的 ...

  2. Vue.js用法详解(一)更新中~

      前  言 前段时间为了一个数据查询的项目自学了Vue,感觉这款框架还是很不错的,今天就整理整理这个框架如何使用,希望对正在学这个框架的小伙伴有所帮助~ 首先,我们先来了解一下Vue: Vue.js ...

  3. Asp.Net MVC 中的 Cookie(译)

    Asp.Net MVC 中的 Cookie(译) Cookie Cookie是请求服务器或访问Web页面时携带的一个小的文本信息. Cookie为Web应用程序中提供了一种存储特定用户信息的方法.Co ...

  4. pt-stalk

    1.名词解释 Collect forensic data about MySQL when problems occur 在问题发生的时候采集现场数据 pt-stalk waits for a tri ...

  5. StackExchange.Redis学习笔记(三)

    这一章主要写一些StackExchange.Redis的配置及不太经常用到的函数 数据库连接 下面是我的连接字符串,里面指定了地址,密码,及默认的数据库 Redis启动后默认会分成0-15个数据库,不 ...

  6. jfinal 源码学习

    源由 最近闲来无事,顺带看了下jfinal的源码,以下均为自己的个人理解,如有错误请指定: jfinal 使用 在web.xml中配置JfinalFilter 并定义JfinalConfig的类 自定 ...

  7. phpcms v9 前台getshell脚本

    phpcms v9 前台getshell脚本 用法:python phpcmsv9getshell.py http://baidu.com # -*- coding:utf-8 -*- ''' --- ...

  8. 基于docker+reveal.js搭建一个属于自己的在线ppt网站

    前言 最近热衷于Docker,由于这段时间使用Docker来折腾自己的服务器,越来越感觉这是一种及其被应该推广的技术,因此想在公司内部也做一次技术分享.当然,如果只是做的PPT,我就不写这文章了.既然 ...

  9. Python之登录接口

    要求 1.输入用户名密码2.认证成功后显示欢迎信息3.输错三次后锁定 思路 没有数据库,这里使用本地文件,一共需要两个文件:       黑名单的文件:黑名单里检测,不让登录     用户信息文件:将 ...

  10. NodeJS网络爬虫

      原文地址:NodeJS网络爬虫   网上有很多其他语言平台版本的网络爬虫,比如Python,Java.那怎么能少得了我们无所不能的javascript呢