【SPFA】POJ1860-Currency Exchange
【题目大意】
给出每两种货币之间交换的手续费和汇率,求出从当前货币s开始交换,能否赚。
【思路】
反向运用SPFA,判断是否有正环。每次队首元素出队之后,判断一下到源点s的距离是否增大,增大则返回true。一开始判断正环的思路如果有一个元素入队超过n次,则说明存在正环。后来发现这个思路是不适用的,因为这个正环中并不一定包含源点..要注意的是:题目中的m并不是边数,边数应该是m*2!所以开数组的时候要尤其注意数组不能开小了。由于C++的判定中如果没有崩掉,不会返回RE只会返回WA,我纠结了好久才找出错因。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
struct Rec
{
int ori,des;
double len,val;
};
const int MAXN=+;
int first[MAXN],next[MAXN*];
/*用于存储邻接表*/
double dis[MAXN];
/*存储从s出发到达当前货币的最大值*/
int vis[MAXN];
/*判断某一个点是否已经存在于队列中*/
Rec edge[MAXN*];
int n,m,s;
double v; bool SPFA()
{
memset(dis,,sizeof(dis));
memset(vis,,sizeof(vis));
queue<int> que; dis[s]=v;
/*默认到持有货币的距离为持有货币的价值*/
vis[s]=;
que.push(s); while (!que.empty())
{
int pos=que.front();
int k=first[pos];
vis[pos]=;
que.pop();
while (k!=-)
{
if (dis[edge[k].des]<(dis[pos]-edge[k].len)*edge[k].val)
{
dis[edge[k].des]=(dis[pos]-edge[k].len)*edge[k].val;
if (!vis[edge[k].des])
{
vis[edge[k].des]=;
que.push(edge[k].des);
}
}
k=next[k];
}
if (dis[s]>v) return true;
}
return false;
} int main()
{
scanf("%d%d%d%lf",&n,&m,&s,&v);
s--;
memset(first,-,sizeof(first)); for (int i=;i<m;i++)
{
int a,b;
double c1,r1,c2,r2;
scanf("%d%d%lf%lf%lf%lf",&a,&b,&r1,&c1,&r2,&c2);
a--;
b--;
edge[i*].ori=edge[i*+].des=a;
edge[i*].des=edge[i*+].ori=b;
edge[i*].val=r1;
edge[i*].len=c1;
edge[i*+].val=r2;
edge[i*+].len=c2; next[i*]=first[a];
first[a]=i*;
next[i*+]=first[b];
first[b]=i*+;
}
m=m*+;
if (SPFA()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
//system("pause");
return ;
}
【SPFA】POJ1860-Currency Exchange的更多相关文章
- 【POJ】1860 Currency Exchange
真是气skr人..没把d[]换成double...de了一上午的bug// 记得用G++提交啊 题目链接:http://poj.org/problem?id=1860 题意:告诉你n个点,m条路.起始 ...
- POJ1860 Currency Exchange【最短路-判断环】
Several currency exchange points are working in our city. Let us suppose that each point specializes ...
- poj1860 Currency Exchange(spfa判断正环)
Description Several currency exchange points are working in our city. Let us suppose that each point ...
- POJ1860 Currency Exchange —— spfa求正环
题目链接:http://poj.org/problem?id=1860 Currency Exchange Time Limit: 1000MS Memory Limit: 30000K Tota ...
- 【SPFA】 最短路计数
最短路计数 [问题描述] 给出一个N个顶点M条边的无向无权图,顶点编号为1-N.问从顶点1开始,到其他每个点的最短路有几条. [输入格式] 输入第一行包含2个正整数N,M,为图的顶点数与边数. ...
- POJ1860——Currency Exchange(BellmanFord算法求最短路)
Currency Exchange DescriptionSeveral currency exchange points are working in our city. Let us suppos ...
- sendrose【SPFA】
之前看到一题需要并查集+SPFA,然后就特别囧的发现自己SPFA这个历史遗留问题已经不知道怎么打了╮(╯▽╰)╭ 就果断挑了一题特别裸的SPFA赶紧搞搞掉,顺便自己乱YY下学SPFA的笔记,免得自己下 ...
- 【SPFA】POJ1511-Invitation Cards
[题目大意] 给出一张有向图,以1位源点,求“从源点出发到各点的距离”和“与各点返回源点的距离和”相加得到的和. [思路] 毫无疑问是最短路径,但是这数据量就算是SPFA也绝壁会超时啊,抱着必死的心态 ...
- POJ1860 Currency Exchange(bellman-ford)
链接:http://poj.org/problem?id=1860 Currency Exchange Description Several currency exchange points are ...
随机推荐
- 容斥原理&&莫比乌斯专题
A题:A - Eddy's爱好 HDU - 2204 具体思路:如果是求n中,为平方数的有多少个,那么答案肯定是sqrt(n),同理,如果是三次根号的话,那么答案肯定是n的三分之一次方.然后继续按 ...
- win10+anaconda虚拟环境python3.6+cuda9.0+cudnn7+pytorch0.4.1
anaconda下jupyter notebook的打开目录的修改:参考:https://www.cnblogs.com/amberdata/p/7907845.html pytorch官网:http ...
- [转]Laplace算子和Laplacian矩阵
1 Laplace算子的物理意义 Laplace算子的定义为梯度的散度. 在Cartesian坐标系下也可表示为: 或者,它是Hessian矩阵的迹: 以热传导方程为例,因为热流与温度的梯度成正比,那 ...
- weblogica domain目录 环境变量 如何启动weblogic server
手工启动weblogic server
- KVM,QEMU,libvirt入门学习笔记【转】
转自:http://blog.csdn.net/julykobe/article/details/27571387 注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明. 0.虚拟 ...
- 移动端测试=== adb 无线连接手机
无线连接(需要借助 USB 线) 除了可以通过 USB 连接设备与电脑来使用 adb,也可以通过无线连接——虽然连接过程中也有需要使用 USB 的步骤,但是连接成功之后你的设备就可以在一定范围内摆脱 ...
- Linux内核跟踪之ring buffer的实现【转】
转自:http://blog.chinaunix.net/uid-20543183-id-1930845.html ---------------------------------------- ...
- 【hihocoder1251】Today is a rainy day
#include<bits/stdc++.h> ; ; const int inf=0x3f3f3f3f; using namespace std; char s1[N],s2[N]; ] ...
- BZOJ 3510 - 首都 「 $LCT$ 动态维护树的重心」
这题 FlashHu 的优化思路值得借鉴 前置引理 树中所有点到某个点的距离和中,到重心的距离和是最小的. 把两棵树通过某一点相连得到一颗新的树,新的树的重心必然在连接原来两棵树重心的路径上. 一棵树 ...
- python基础--面向对象
什么是面向对象编程 OOP编程是利用“类”和对象来创建各种模型来实现对真实世界的描述. OOP具有可维护性和可扩展性 二:面向对象有那些特性 1)CLASS类:一个类是对拥有相同属性的对象的抽象.类拥 ...