博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 1860 Currency Exchange SPFA
阅读量:5285 次
发布时间:2019-06-14

本文共 1800 字,大约阅读时间需要 6 分钟。

算法:

1.SPFA求最长路,dis【】初始直为0,大于改成小于号

2.松弛结束后,判断是否大于dis[S] > V, 大于就输出YES, 否则输出NO

 

View Code
#include 
#include
#include
#include
#include
#include
#define MAXN 100100using namespace std;struct Edge{ int u, next; double val, cost; Edge( ) { } Edge( int U, int Next, double Val, double Cost): u(U), next(Next), val(Val), cost(Cost) {}}edge[MAXN];int N, M, S, head[MAXN], visit[MAXN], hash[MAXN], size;double V, dis[MAXN];struct node{ int ID; // double rate; double money; // double c;};void init( ){ for( int i = 0; i < MAXN; i++) { head[i] = -1; dis[i] = 0; visit[i] = 0; hash[i] = 0; } size = 0; }void AddEdge( int u, int v, double val1, double val2, double Cost1, double Cost2){ edge[size] = Edge( v, head[u], val1, Cost1); head[u] = size++; edge[size] = Edge( u, head[v], val2, Cost2); head[v] = size++; }void SPFA( ){ queue
q; node p; p.ID = S; p.money = V; q.push( p ); dis[S] = V; hash[S] = 1; while( !q.empty()) { p = q.front( ); q.pop( ); int v = p.ID; double money = dis[v]; visit[v] = 0; for( int e = head[v]; e != -1; e = edge[e].next) { int v = edge[e].u; double rate = edge[e].val; double cost = edge[e].cost; double xx = rate * ( money - cost ); if( dis[v] < xx ) { dis[v] = xx; if( !visit[v] ) { p.ID = v; p.money = dis[v]; q.push( p ); visit[v] = 1; hash[v]++; } } } } if( fabs(dis[S]) - V > 0 ) puts("YES"); else puts("NO"); }int main( ){ int a, b; double rab, cab, rba, cba; while( scanf("%d%d%d%lf",&N, &M, &S, &V) != EOF) { init( ); for( int i = 1; i <= M; i++) { scanf("%d%d%lf%lf%lf%lf",&a, &b, &rab, &cab, &rba, &cba); AddEdge( a, b, rab, rba, cab, cba); } SPFA( ); } return 0; }

转载于:https://www.cnblogs.com/tangcong/archive/2012/07/10/2584819.html

你可能感兴趣的文章
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>
微信上传素材返回 '{"errcode":41005,"errmsg":"media data missing"}',php5.6返回
查看>>
div或者p标签单行和多行超出显示省略号
查看>>
Elasticsearch 滚动重启 必读
查看>>
Hadoop基本概念
查看>>
java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹
查看>>
浅说 apache setenvif_module模块
查看>>
MySQL--数据插入
查看>>
重新学习python系列(二)? WTF?
查看>>
shell脚本统计文件中单词的个数
查看>>
SPCE061A学习笔记
查看>>
sql 函数
查看>>
hdu 2807 The Shortest Path 矩阵
查看>>
熟悉项目需求,要知道产品增删修改了哪些内容,才会更快更准确的在该项目入手。...
查看>>
JavaScript 变量
查看>>
java实用类
查看>>