给定一些站点可以交换货币,判断持有某一种货币的人是否可以增值财产.
解法1:基本思路是寻找一个正环,包含出发点s.没有用Bellman_ford算法,采用的是深度搜索优先(DFS),当一个节点被访问过之后,再次访问,就说明找到了一条回路.这时候需要判断找到的回路是不是正的.比较当前节点的货币数量与出发时节点的货币数量(一个节点可能有很多货币状态,因为可以通过不同的途径到达该节点,所以需要利用一个栈把状态保存起来),当前状态和前一个入栈的状态就是应该比较的对象.如果满足就退出函数.
//解法1为了验证答案,从txt文档里面读入了大量数据作测试,没有按照poj上的手动输入.
#include "iostream"
#include "fstream"
#include "sstream"
#include "string"
#include "vector"
using namespace std;
struct record
{
int next;
double rate;
double com;
};
struct List
{
int index;
vector<record> ptr;
};
typedef vector<List> G;
int N, M, S;
double V;
bool isvisited[101] = { false };
int a, b;
double r1, c1, r2, c2;
static bool isyes = false;
inline double convert(double money, double rate, double comm