題意:這裡有n種貨幣,分別記為1~n,有m種貨幣交換的方式,每一種方式有a,b兩種錢幣,有rab, cab, rba and cba,四個數,表示交換率,
nick手上有其中的一種貨幣s,貨幣s的錢數為v,問你能否通過一定次數的錢幣交換讓nick手中的錢增加
分析:這裡是要判斷迴路,那麼可以用spfa 加乙個入隊次數的陣列來判別是否有迴路,也可以用bellman,這裡要注意的是,鬆弛操作不能死用模板了,, 要有一點點的轉變,這裡我們可以這樣處理,置 d 這個鬆弛要用到的陣列為0,不是以往的無窮大,新加乙個入隊陣列判迴路 cnt 為0
那麼直接上馬,附加注釋
// ac 204k 32ms
#include#include#includeusing namespace std;
#define max 101
struct node
edge[max*2];
int head[max],tol;
int n,m,s;
double v;
void add(int st,int end,double r,double c)
void init()
}double d[max];
int cnt[max];//記錄入隊次數
bool flag[max];
bool spfa()
} }return false;
}int main()
個人愚昧觀點 ,歡迎指正與討論 poj1860解題報告 兩種解法
include iostream include fstream include sstream include string include vector using namespace std struct record struct list typedef vector g int n,m,...
POJ 1860判斷正環
題目鏈結 題意 有n種型別的貨幣,m個城市可以兌換兩種貨幣,乙個人手上有v塊s型別的錢,要求判斷是否可以經過若干次兌換後這個人手上的s型別的錢增加了。思路 對於每種貨幣,建立乙個點,兩種貨幣可以交換,則這兩個點之間有一條邊,經過若干次兌換後要回到s型別的錢,則一定存在環,而錢要增加,則需要存在正權環...
poj解題報告 1328
不得不說,這題是讓我飽受折磨,畢竟第一次做貪心演算法,而且wa了好多次,幸好有學長的幫助,最終找到了問題所在,是在快排上是問題,double高位不可向int低位轉換,由於一開始強制轉換導致雖然樣例和其他的測試資料過了,但還是wa,現在改完了就對了,附上ac ps 這題通過率是22 真心不簡單 如下 ...