poj 1860 -- Currency Exchange(最短路)
2013-01-20 00:05
344 查看
货币交换,货币之间可以交换,有汇率和税,要求进行若干次交换之后会是手中的钱是否增加
反向使用bellman,往大“松弛”,如果增加则返回true
#include<iostream>
#include<queue>
using namespace std;
int cnt;
double V;
double dis[101];
struct curren
{
double rate;
double comm;
};
curren a[101][101];
bool bellman(int v)
{
bool isin[101]= {0};
isin[v]=1;
queue<int> q;
q.push(v);
while(q.size())
{
int t=q.front();
for(int i=1; i<=cnt; i++)
{
double tmp=(dis[t]-a[t][i].comm)*a[t][i].rate;
if(tmp>dis[i])
{
dis[i]=tmp;
if(isin[i]==0)
{
isin[i]=1;
q.push(i);
}
}
}
q.pop();
isin[t]=0;
if(dis[v]>V)
return true;
}
return false;
}
int main()
{
for(int i=0; i<101; i++)
for(int j=0; j<101; j++)
a[i][j].rate=a[i][j].comm=0.0;
for(int i=0; i<101; dis[i++]=0);
int m,s;
cin>>cnt>>m>>s>>V;
dis[s]=V;
while(m--)
{
int t1,t2;
cin>>t1>>t2;
cin>>a[t1][t2].rate>>a[t1][t2].comm>>a[t2][t1].rate>>a[t2][t1].comm;
}
if(bellman(s))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
反向使用bellman,往大“松弛”,如果增加则返回true
#include<iostream>
#include<queue>
using namespace std;
int cnt;
double V;
double dis[101];
struct curren
{
double rate;
double comm;
};
curren a[101][101];
bool bellman(int v)
{
bool isin[101]= {0};
isin[v]=1;
queue<int> q;
q.push(v);
while(q.size())
{
int t=q.front();
for(int i=1; i<=cnt; i++)
{
double tmp=(dis[t]-a[t][i].comm)*a[t][i].rate;
if(tmp>dis[i])
{
dis[i]=tmp;
if(isin[i]==0)
{
isin[i]=1;
q.push(i);
}
}
}
q.pop();
isin[t]=0;
if(dis[v]>V)
return true;
}
return false;
}
int main()
{
for(int i=0; i<101; i++)
for(int j=0; j<101; j++)
a[i][j].rate=a[i][j].comm=0.0;
for(int i=0; i<101; dis[i++]=0);
int m,s;
cin>>cnt>>m>>s>>V;
dis[s]=V;
while(m--)
{
int t1,t2;
cin>>t1>>t2;
cin>>a[t1][t2].rate>>a[t1][t2].comm>>a[t2][t1].rate>>a[t2][t1].comm;
}
if(bellman(s))
cout<<"YES"<<endl;
else
cout<<"NO"<<endl;
}
相关文章推荐
- poj 1860 Currency Exchange (最短路bellman_ford思想找正权环 最长路)
- 最短路中汇率问题 POJ 1860 与 POJ 2240
- POJ训练计划1860_Currency Exchange(最短路_BellmanFord算法)
- poj 1860 Currency Exchange (最短路,Bellman-Ford算法)
- poj 1860 Currency Exchange(最短路)
- Poj 1860 Currency Exchange + Poj 2240 Arbitrage (货币兑换问题+最短路)
- 文章标题 POJ 1860 : Currency Exchange(最短路--spfa)
- POJ 1860-Currency Exchange(最短路-回路套汇)
- poj 1860 Currency Exchange (最短路变形-spfa)
- POJ-1860(最短路)
- 基础最短路五 POJ1860
- POJ1860--Currency Exchange(最短路Bellman_Ford)
- 最短路(Bellman_Ford) POJ 1860 Currency Exchange
- POJ 1860 Currency Exchange 最短路+负环
- POJ-1860-Currency Exchange [最短路][BellmanFord]
- poj 1860 最短路—Bellman-Ford算法
- POJ 1860——Currency Exchange——————【最短路、SPFA判正环】
- POJ 1860 最短路
- POJ 1860 Currency Exchange (最短路)
- Currency Exchange POJ - 1860 单源最短路 Bellman_Ford