poj 1860 Currency Exchange (bellman-ford 判断正环)
2015-01-21 16:08
393 查看
http://poj.org/problem?id=1860
题意: 有n种货币 m个交换点 初始为s货币 并由v的面额
每个交换点可以互换两种货币 汇率为r 但是需要c的手续费 而且a换b与 b换a 的汇率和手续费不相同
问nick能否通过交换使货币金额数增加
思路: 存在正环的情况下 金额数能不断增长
先通过bellman-ford 求出最长路
在判断是否存在 继续满足 (d[x]-c[i])*r[i]>d[y] 的边
如果存在 则说明存在正环
View Code
题意: 有n种货币 m个交换点 初始为s货币 并由v的面额
每个交换点可以互换两种货币 汇率为r 但是需要c的手续费 而且a换b与 b换a 的汇率和手续费不相同
问nick能否通过交换使货币金额数增加
思路: 存在正环的情况下 金额数能不断增长
先通过bellman-ford 求出最长路
在判断是否存在 继续满足 (d[x]-c[i])*r[i]>d[y] 的边
如果存在 则说明存在正环
#include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<stack> #include<iostream> #include<algorithm> using namespace std; int u[300],v[300]; double r[300],c[300]; double d[300]; int main() { int n,m,s; double vv; int i,j,k; int a,b; double r1,c1,r2,c2; while(scanf("%d%d%d%lf",&n,&m,&s,&vv)!=EOF) { for(i=1;i<=m*2;i+=2) { scanf("%d%d%lf%lf%lf%lf",&a,&b,&r1,&c1,&r2,&c2); u[i]=a; v[i]=b; r[i]=r1; c[i]=c1; u[i+1]=b;v[i+1]=a;r[i+1]=r2;c[i+1]=c2; } memset(d,0,sizeof(d)); d[s]=vv; int ok=0; for(k=0;k<n-1;k++) { for(i=1;i<=m*2;i++) { int x=u[i],y=v[i]; if((d[x]-c[i])*r[i]>d[y]) { d[y]=(d[x]-c[i])*r[i]; } } } for(i=1;i<=m*2;i++) { if(ok) break; int x=u[i],y=v[i]; if((d[x]-c[i])*r[i]>d[y]) { ok=1; } } if(ok) printf("YES\n"); else printf("NO\n"); } return 0; }
View Code
相关文章推荐
- poj1860(Bellman-Ford变形,含负权的单源最短路径,判断是否有正权环)
- POJ 1860 Currency Exchange【bellman_ford判断是否有正环——基础入门】
- 【bellman-Ford判断正权回路】POJ - 1860 Currency Exchange
- poj 1860 (Bellman_Ford判断正环)
- POJ 1860 Currency Exchange Bellman-Ford算法求单源最短路径并判断是否有正权回路
- POJ 1860 Currency Exchange(如何Bellman-Ford算法判断图中是否存在正环)
- POJ 1860 Currency Exchange(Bellman-Ford判断最长路是否含有正环)
- POJ 1860 Currency Exchange【bellman_ford判断是否有正环——基础入门】
- poj_1860(bellman-ford)
- POJ 1860 Currency Exchange 毫无优化的bellman_ford跑了16Ms,spfa老是WA。。
- poj1860 Currency Exchange --- Bellman-Ford
- POJ 1860 Currency Exchange (最短路径.Bellman-Ford)
- POJ 1860 Currency Exchange(Bellman-Ford最短路径的变形)
- POJ 3259 Wormholes(判断负权回路|SPFA||Bellman-Ford)
- Poj 1860 Currency Exchange(Bellman-Ford,SPFA解单源最短路径问题)
- poj 1860 Currency Exchange :bellman-ford
- Poj 1860 Currency Exchange(Bellman-Ford,SPFA解单源最短路径问题)
- POJ 1860 Currency Exchange bellman_ford
- zoj 1544 || poj 1860 Currency Exchange(Bellman-ford)
- poj 1860 2378 3259带负边最短路 ** bellman ford 模板