题目大意:给定n种货币及其汇率,求能否通过货币兑换使得你手里的钱币增多、细想一下其实就是求一条最长路,那关键问题就是如何判断循环终止了。
我想主要有下面两个边界条件:
1.当不能松弛的时候停止, 这样就代表这个图中没有正环,这样判断一下dist[xx]是否大于curmoney就可以了。
2.管他妈什么正环负环,把起点到所有点的距离更新一遍看看dist[start]是否大于curmoney就行了。
这题我wa了估计有10多次,一开始用的是邻接表……后来想想还有上税的操作,自己的邻接表模版不大方便,就上网找了一份邻接矩阵的代码,改了n次还是wa,再看discuss的时候发现还有精度的问题,(以后注意:凡是涉及到double运算复杂的问题有时候都要判断精度的问题,不然容易超时!)要熟练掌握邻接矩阵和邻接表两种形式的运算!
下面的代码中有一开始写邻接表的部分代码,希望日后完成邻接表的代码!