poj1860
2012-07-20 23:23
246 查看
一种货币就是图上的一个点 一个“兑换点”就是图上两种货币之间的一个兑换环,相当于“兑换方式”M的个数,是双边 唯一值得注意的是权值,当拥有货币A的数量为V时,A到A的权值为K,即没有兑换 而A到B的权值为(V-Cab)*Rab 本题是“求最大路径”,之所以被归类为“求最小路径”是因为本题题恰恰与bellman-Ford算法的松弛条件相反,求的是能无限松弛的最大正权路径,但是依然能够利用bellman-Ford的思想去解题。
#include<iostream> using namespace std; const int MAX = 2000; const int MAXN = 202; struct money_transfer { int mon_type_a,mon_type_b; double rate,cost; }transfer_list[MAXN]; double dis[MAXN]; void init(int s,double num) { memset(dis,0,sizeof(dis)); dis[s] = num; } bool relax(int mon_1,int mon_2,double cost,double rate) { if(dis[mon_2] < (dis[mon_1]-cost)*rate) { dis[mon_2] = (dis[mon_1]-cost)*rate; return true; } return false; } int main() { int num_of_money;int T;int source_money;double amount; while(cin>>num_of_money>>T>>source_money>>amount) { init(source_money,amount); for(int i=0,k=0;k<T;i+=2,k++) { int buff_mon1;int buff_mon2; cin>>buff_mon1>>buff_mon2; transfer_list[i].mon_type_a = buff_mon1; transfer_list[i].mon_type_b = buff_mon2; cin>>transfer_list[i].rate>>transfer_list[i].cost; transfer_list[i+1].mon_type_a = buff_mon2; transfer_list[i+1].mon_type_b = buff_mon1; cin>>transfer_list[i+1].rate>>transfer_list[i+1].cost; } for(int i=0;i!=num_of_money-1;i++) { //bool judge(false); for(int j=0;j!=2*T;j++) bool judge = relax(transfer_list[j].mon_type_a,transfer_list[j].mon_type_b,transfer_list[j].cost,transfer_list[j].rate); // if(!judge) // break; } /* for(int i=0;i<2*T;i++) cout<<dis[i]<<" "; cout<<endl;*/ bool flag = false; for(int i=0;i!=2*T;i++) { int mon_a = transfer_list[i].mon_type_a; int mon_b = transfer_list[i].mon_type_b; double cost = transfer_list[i].cost; double rate = transfer_list[i].rate; if(dis[mon_b] < (dis[mon_a]-cost)*rate) { flag = true; break; } } if(flag) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
相关文章推荐
- poj1860(图论,bellman-ford)
- poj1860 Currency Exchange (bellman_ford)
- POJ 1860 (反向bellman用法)
- POJ 1860-Currency Exchange(最短路-回路套汇)
- POJ1860--Currency Exchange(最短路Bellman_Ford)
- POJ 1860 Currency Exchange(Ballman)
- POJ-1860 Currency Exchange
- poj 1860
- POJ-1860(Bellman()重要应用)
- POJ 1860 Currency Exchange (Bellman-Ford算法的运用)
- POJ 1860 Currency Exchange(求环变形)
- POJ 1860 Currency Exchange bellman_ford
- POJ1860 Currency Exchange 最短路bellman-ford
- POJ1860-Currency Exchange(bellman-ford求正环)
- poj1860 Currency Exchange floyd判断正环 (手动翻译)
- 【最长路】POJ 1860 Currency Exchange
- POJ 1860 Currency Exchange
- POJ1860 - Currency Exchange
- poj_1860
- poj 1860