标签:
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 23938 | Accepted: 8678 |
Description
Input
Output
Sample Input
3 2 1 20.0 1 2 1.00 1.00 1.00 1.00 2 3 1.10 1.00 1.10 1.00
Sample Output
YES
题意:N种货币,M种兑换关系,拥有S种货币的数量是V,然后M行分别是兑换关系,A,B两个可以互换的货币的种类,AB的汇率,AB的税,BA的汇率,BA的税,问是否通过某种兑换,让S增值
分析:从s出发,看看是否有一条回路,有的话就能通过这条回来不断增值,s就能保证增值
1 #include <iostream> 2 #include <cstring> 3 #include <vector> 4 #include <cstdio> 5 #include <algorithm> 6 using namespace std; 7 const int INF = 1 << 30; 8 const int MAX = 100+5; 9 const double delta = 1e-8; 10 double dist[MAX]; 11 int n,m,s; 12 double v; 13 struct point 14 { 15 int a,b; 16 double rat,cost; 17 }; 18 vector<point> edge; 19 int zero(double x) 20 { 21 if(x < -delta) 22 return -1; 23 return x > delta; 24 } 25 bool Bellman_Ford(int s) 26 { 27 for(int i = 1; i <= n; i++) 28 { 29 dist[i] = 0; 30 } 31 dist[s] = v; 32 int len = edge.size(); 33 for(int i = 1; i < n; i++) 34 { 35 int flag = 0; 36 for(int j = 0; j < len; j++) 37 { 38 int a = edge[j].a; 39 int b = edge[j].b; 40 double rat = edge[j].rat; 41 double cost = edge[j].cost; 42 double temp = (dist[a] - cost) * rat; 43 if(zero(temp - dist[b]) > 0) //是大于0,一直当非0来算的 44 { 45 dist[b] = temp; 46 flag = 1; 47 } 48 } 49 if(flag == 0) 50 break; 51 } 52 for(int j = 0; j < len; j++) 53 { 54 int a = edge[j].a; 55 int b = edge[j].b; 56 double rat = edge[j].rat; 57 double cost = edge[j].cost; 58 double temp = (dist[a] - cost) * rat; 59 if(zero(temp - dist[b]) > 0) 60 { 61 return true; 62 } 63 } 64 return false; 65 } 66 int main() 67 { 68 while(scanf("%d%d%d%lf", &n,&m,&s,&v) != EOF) 69 { 70 int A,B; 71 double Rab,Cab,Rba,Cba; 72 for(int i = 0; i < m; i++) 73 { 74 point temp; 75 scanf("%d%d%lf%lf%lf%lf",&A,&B,&Rab,&Cab,&Rba,&Cba); 76 temp.a = A; 77 temp.b = B; 78 temp.rat = Rab; 79 temp.cost = Cab; 80 edge.push_back(temp); 81 temp.a = B; 82 temp.b = A; 83 temp.cost = Cba; 84 temp.rat = Rba; 85 edge.push_back(temp); 86 } 87 if(Bellman_Ford(s)) 88 printf("YES\n"); 89 else 90 printf("NO\n"); 91 } 92 return 0; 93 }
POJ1860Currency Exchange(Bellman + 正权回路)
标签:
原文地址:http://www.cnblogs.com/zhaopAC/p/4995977.html