/*題意:幾種不同的物品可以互相交換,但是交換的數量不同
比如:1 單位 us 換 0.5 單位 british
1 單位 british 換 10.0 單位 french
1 單位 french 換 0.21 單位 us
現在我們可以用 1單位us 換 0.5 單位british;
再用這 0.5單位british 換 5 單位french
再用 5單位french 換 1.05 單位us
那麼一開始的1單位的us現在就變成了1.05單位us;
獲利0.05us
題目給出所有可供交換的物品和兩種可以交換的物品之間的交換**
問是否可以通過交換獲利
*//*題解:先用map映照把不同的物品編號,再存入鄰接矩陣
鄰接矩陣必須先初始化
然後用floyd求出各個物品可以通過交換得到的最大值,
再找出每個物品自身的交換後的價值,如果大於原來的價值就輸出yes;
否則輸出no
*/#include
#include
#include
#include
#include
using
namespace
std;
intmain
() for(int i=1; i<=n; i++)
}scanf("%d",&t);
for(int i=0; iscanf("%s %lf %s",&str1,&x,&str2); //儲存路徑
mp[m[str1]][m[str2]] = x;
}//floyd
for(int i=1; i<=n; i++)}}
}printf("case %d: ",r++);
flag = 0;
for(int i=1; i<=n; i++)
}if(!flag)
printf("no\n");
}}
Floyd演算法的應用 POJ 2240
該題大意是套匯問題,貨幣根據匯率轉換來套取多餘的錢數,由於是各個貨幣兩兩轉換,即由floyd判環應用變形則可解決問題。floyd演算法用於解決任意兩個節點之間的最短距離,判斷是否成環等,其實質為動態規劃。1 floyd演算法的應用 2 include 3 include 4 include 5usi...
poj2240 類似負權迴路
題意 給出一些不同型別的貨幣和貨幣之間兌換的比例,求能否實現從一種硬幣開始到自身結束後,實現盈利 分析 1.一開始遇到這個題的時候,我首先想到的是dfs,在遍歷的過程中如果遇到環的話進行判斷,得出結果。但是這樣考慮是不正確的。比如 a 1.0 b b 1.0 c b 5.0 d c 0.1 d d ...
POJ 2240 Arbitrage解題報告
題目大意 乙個圖,從乙個點到另個點,權值會乘乙個數,問是否存在正權環。然後發現乙個問題,用bellman ford的時候,判斷是否存在負權迴路只需要列舉一次所有的邊,看是否還能鬆弛就可以了!include include include include define n 1000 using nam...