题意:

有n种钱币,m个钱币兑换点,小明一开始有第n种钱币数量为w。

每个兑换点可以将两种不同的钱币相互兑换,但是兑换前要先收取一定的费用,然后按照比例兑换。

问小明是否可以经过一系列的兑换之后能够将持有的第n种钱的数量增加。

这题大概就是看是否存在权值为正的环。如果存在这样的环,那么可以一直循环,然后在适当的时候兑换成第n种钱币。

这种算法一定要看好兑换率的范围!~

思路:

利用SPFA算法,当一个点松弛次数超过N次的时候我们认为存在一个正环。

#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
int n,m,stc;
int ednum;
int cnt[];
double stnum;
double dis[];
bool vis[];
struct edge
{
int id;
double cost,plu;
edge *next;
};
edge edges[];
edge *adj[];
inline void addEdge(int a,int b,double c,double d)
{
edge *tmp;
tmp=&edges[ednum];
ednum++;
tmp->id=b;
tmp->cost=c;
tmp->plu=d;
tmp->next=adj[a];
adj[a]=tmp;
}
bool SPFA()
{
int id;
memset(cnt,,sizeof(cnt));
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
{
dis[i]=-;
}
dis[stc]=stnum;
queue<int>q;
q.push(stc);
vis[stc]=;
cnt[stc]++;
while(!q.empty())
{
id=q.front();
q.pop();
vis[id]=;
for(edge *p=adj[id];p;p=p->next)
{
if((dis[id]-p->cost>)&&((dis[id]-p->cost)*p->plu>dis[p->id]))
{
cnt[p->id]++;
if(cnt[p->id]>n)//如果松弛次数超过n次,则说明存在正环
return ;
dis[p->id]=(dis[id]-p->cost)*p->plu;
if(!vis[p->id])
{
q.push(p->id);
vis[p->id]=;
}
}
}
}
return ;
}
int main()
{
int a,b;
double c,d,e,f;
scanf("%d%d%d%lf",&n,&m,&stc,&stnum);
for(int i=;i<=m;i++)
{
scanf("%d%d%lf%lf%lf%lf",&a,&b,&d,&c,&f,&e);
addEdge(a,b,c,d);
addEdge(b,a,e,f);
}
if(SPFA())
printf("YES\n");
else
printf("NO\n");
return ;
}

POJ 1860【求解是否存在权值为正的环 屌丝做的第一道权值需要计算的题 想喊一声SPFA万岁】的更多相关文章

  1. poj 1860 Currency Exchange (SPFA、正权回路 bellman-ford)

    链接:poj 1860 题意:给定n中货币.以及它们之间的税率.A货币转化为B货币的公式为 B=(V-Cab)*Rab,当中V为A的货币量, 求货币S通过若干此转换,再转换为原本的货币时是否会添加 分 ...

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

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

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

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

  4. POJ 1860 Currency Exchange (最短路)

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

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

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

  6. poj - 1860 Currency Exchange Bellman-Ford 判断正环

    Currency Exchange POJ - 1860 题意: 有许多货币兑换点,每个兑换点仅支持两种货币的兑换,兑换有相应的汇率和手续费.你有s这个货币 V 个,问是否能通过合理地兑换货币,使得你 ...

  7. POJ 1860 Currency Exchange (Bellman-Ford)

    题目链接:POJ 1860 Description Several currency exchange points are working in our city. Let us suppose t ...

  8. 如何通过源生js获取一个元素的具体样式值 /* getCss:获取指定元素的具体样式的属性值 curElement:[dom对象] attr:[string] */

    昨天的博客些的真的是惨不忍睹啊!!!但是我的人生宗旨就是将不要脸的精神进行到底,所以,今天我又来了.哈哈哈哈哈! 方法一:元素.style.属性名:(这个有局限性--只能获取行内样式的值,对于样式表或 ...

  9. 关于有默认值的字段在用EF做插入操作时的思考(续)

    问题描述 今天下午(看现在这时间,应该是昨天下午了哈),园友 choon 写了这样一篇博文<关于有默认值的字段在用EF做插入操作时的思考>. 博文内容主要记录的是 choon 使用 EF ...

随机推荐

  1. Struts2控制文件的上传与下载

    Struts2控制文件上传与下载的几个注意事项: (1)必须将表单的method设置为post,将enctype设置为multipart/from-data.只有这样,浏览器才会把用户选择文件的二进制 ...

  2. C# 移动开发 MasterDetailPage 关闭时报错问题

    至上次发表的 MasterDetailPage界面做主App,折腾10天,终于知道问题所在.. 泪奔的是解决这个问题只要一句代码 在MainActivity.cs里 [Activity(Label = ...

  3. 用JS获取Html中所有图片文件流然后替换原有链接

    function displayHtmlWithImageStream(bodyHtml) { var imgReg = /<img.*?(?:>|\/>)/gi; var arr ...

  4. 必知干货:Web前端应用十种常用技术你全都知道吗?

    Web前端应用十种常用技术,随着JS与XHTML的应用普及,越来越多的web界面应用技术出现在网站上,比如我们常见的日历控件,搜索下拉框等,这些web界面应用技术大大的丰富了网站的表现形式,本文将为您 ...

  5. JavaEE-03 JSP数据交互02

    学习要点 application pageContext JSP对象作用域 cookie application 作用 类似于系统的“全局变量”,用于在同一个服务器内的所有用于之间的数据共享,对于整个 ...

  6. Sql Server 中锁的概念(1)

    Sql Server 中锁的概念   锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破 ...

  7. Word转html并移植到web项目

    1.打开对应word文件 建议使用web视图查看文档 这样可以提前预览转转成html样式 2.如果有图片修改图片大小及格式 在web视图下,把图片调制适当大小,不然导出的html可能图片较小 3.点击 ...

  8. JS 数组间的操作

    JS 数组间的操作(交集,并集.差集) 以下是js数组之间常用的操作,如交集,并集.差集等. 迭代 each是一个集合迭代函数,可以将一个函数作为参数和一组可以选的参数.依次将集合的每一个元素和可选参 ...

  9. HDU1116(欧拉路径+并查集)

    题意: 给出一些字符串,有这两个字符串,如果第一个字符串的最后一个字母和第二个字符串的第一个字母是一样的,则这两个字符串是可以连接在一起的. 问给出的这些字符串能否串成一个环或者一整个链. 思路: 将 ...

  10. 利用python库twilio来免费发送短信

    大家好,我是四毛,最近开通了个人公众号“用Python来编程”,欢迎大家“关注”,这样您就可以收到优质的文章了. 今天跟大家分享的主题是利用python库twilio来免费发送短信. 先放一张成品图 ...