作业帮 > 综合 > 作业

ACM hust 1019 A dangerous trip

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/17 03:54:41
ACM hust 1019 A dangerous trip
帮我看看为什么不过吧!
我的思路是:做两次最短路,一次是从1开始做,一次是从n开始做,然后再枚举每条边,假设边为(a,b),则看看1到a的距离和n到b的距离加上(a,b)的时间的一半,可是最后还是不过,看看这种思路有没有错,以下是代码
#include
#include
#include
#include
#include
#include
using namespace std;
const int N=100001;
typedef pairpii;
priority_queueq;
struct node
{
int id,cost;
};
vectormap[N];
int d1[N],d2[N],n;
bool vis[N];
void dijkstra1(int k)
{
for (int i=1;i
ACM hust 1019 A dangerous trip
我表示你的水平越来越高了,得跟你相互探讨,看下这个哈:
对每个点保存两个值,做两遍最短路:
第一次普通最长路,
第二遍做最短路时,对所有边枚举其缩到一半的情况,具体就是:
Dist[p->v][1] = min(Dist[i][0]+p->len/2.0, Dist[i][1]+p->len)
再问: 为什么第一次要做最长路
再答: 这个应该写错了,是最短路。
再问: 用到了DP的思想,可是思路应该和我的差不多,好吧!可能是有的地方没有想通
再答: 你进步还是挺快的,加油哈。我已经很长时间不做ACM了,有些问题回答不了你了。谅解哈。