比较简单的一道题目,考察逆推法,从终点逆推到起始点即可,注意要存储每条边的信息,对应的每个顶点要考虑所有的发车时间以及利用概率计算相应的期望值即可,具体实现见如下代码:
#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<deque>
#include<functional>
using namespace std;
const int N = 2100;
const double Inf = 10000000000000.00;
const double ex = 1e-10;
double cost[N][60];
vector<double> test;
class Road{
public:
int from, to, start, dur, per, delay;
};
class Solve{
public:
map<string, int> record;
int amount;
string starts, ends;
int total;
vector<int> G[N];
vector<Road> road;
bool visit[N];
int s_ind, e_ind;
int find_location(string s){
if (record.find(