题目大意:

找一条节点 1 到节点 N 的最短路,保证这条路上每一条边都比前一条边长

dp[i] 表示在当前状态下1到i的最小值

先将所有边根据边的长度排一个序,再每次取出同一段相同长度的边去更新当前图中的每一个点可以更新的dp值,当然我们不能不能因为这相同的边长相互影响,所以不能边找边的同时边松弛dp值,因为可能 1-2:1  2-3:1,也就是说第一次其实不能由1到3这个点,但是你先更新1-2,那么2-3会因为2的dp值存在而可以松弛,所以,先找到所有可行的能进行迟缓的边记录在rec[]数组中,再把里面所有的边弛缓一遍

 #include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int N = ;
typedef long long LL;
LL dp[N];
int n , m , k; struct Path{
int x,y,d;
bool operator<(const Path &m)const{
return d < m.d;
}
}p[]; struct Rec{
int x,y;
LL d;
Rec(int x=,int y=,LL d=):x(x),y(y),d(d){}
}rec[]; void update(int l , int r)
{
int t = ; for(int i=l;i<=r;i++){
int u = p[i].x , v = p[i].y;
if(dp[u] >= && (dp[v] > dp[u] + p[i].d || dp[v] < ))
{
rec[t++] = Rec(u,v, dp[u] + p[i].d);
}
if(dp[v] >= && (dp[u] > dp[v] + p[i].d || dp[u] < ))
{
rec[t++] = Rec(v,u, dp[v] + p[i].d);
}
} for(int i=;i<t;i++){
int u = rec[i].x , v = rec[i].y;
if(dp[v] > rec[i].d || dp[v] < )
{
dp[v] = rec[i].d;
}
}
} void add_edge(int x,int y,int d)
{
p[k].x = x , p[k].y = y , p[k++].d = d;
} void solve()
{
sort(p,p+k);
memset(dp,-,sizeof(dp));
dp[] = ;
int l=;
for(int r= ; r<k;r++){
if(p[r].d != p[r-].d){
update(l , r-);
l=r;
}
}
update(l,k-);
if(dp[n] < )
puts("No answer");
else
printf("%I64d\n",dp[n]);
} int main()
{
// freopen("test.in","rb",stdin); int T,a,b,d;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m); k=;
memset(G , - , sizeof(G));
for(int i=;i<m;i++){
scanf("%d%d%d",&a,&b,&d);
add_edge(a,b,d);
}
solve();
}
return ;
}

HDU 4479 权递增的最短路问题的更多相关文章

  1. HDU 4479 Shortest path 带限制最短路

    题意:给定一个图,求从1到N的递增边权的最短路. 解法:类似于bellman-ford思想,将所有的边先按照权值排一个序,然后依次将边加入进去更新,每条边只更新一次,为了保证得到的路径是边权递增的,每 ...

  2. 1160: sundari && Shortest path HDU - 4479

    http://gdutcode.sinaapp.com/problem.php?id=1160 http://acm.hdu.edu.cn/showproblem.php?pid=4479 35 51 ...

  3. HDU 6464 权值线段树 && HDU 6468 思维题

    免费送气球 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  4. HDU 1087 最大递增子序列

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  5. HDU 6464 /// 权值线段树

    题目大意: 共Q次操作 操作有两种 操作一 在序列尾部加入f[i]个s[i] 操作二 查询序列第f[i]小到第s[i]小之间的总和 离线操作 把序列内的值离散化 然后利用离散化后的值 在线段树上对应权 ...

  6. HDU 5636 关键点的 floyd 最短路问题

    Shortest Path Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. hdu 1087 最大递增和

    思路和LIS差不多,dp[i]为i结尾最大值 #include <iostream> #include <string> #include <cstring> #i ...

  8. hdu 1087 最大递增子序列和

    #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #defin ...

  9. 最小生成树之 prim算法和kruskal算法(以 hdu 1863为例)

    最小生成树的性质 MST性质:设G = (V,E)是连通带权图,U是V的真子集.如果(u,v)∈E,且u∈U,v∈V-U,且在所有这样的边中, (u,v)的权c[u][v]最小,那么一定存在G的一棵最 ...

随机推荐

  1. sdut2784&cf 126b Good Luck!(next数组)

    链接 next数组的巧妙应用  学弟出给学弟的学弟的题.. 求最长的 是前缀也是后缀同时也是中缀的串  next的数组求的就是最长的前后缀 但是却不能求得中缀 所以这里 就把尾部去掉之后再求 这样就可 ...

  2. absolute元素水平居中

    原始(未居中): .con{ width:200px; height:200px; background:#ccc; position:relative; } .abs{ width:40px; he ...

  3. 【C++】模板简述(四):模板为什么不支持分离编译?

    上文简述了类模板相关功能,本文主要简述为什么模板不支持分离编译? 在C++中,为了一个项目的规范,我们通常把代码归为三类:声明文件.实现文件.测试文件. 比如,我要用C++实现一个链表,那么就会创建这 ...

  4. css定位position属性深究

    1.static:对象遵循常规流.此时4个定位偏移属性不会被应用. 2.relative:对象遵循常规流,并且参照自身在常规流中的位置通过top,right,bottom,left这4个定位偏移属性进 ...

  5. oauth 理解

    单点登录 对授权码模式的解读. 1. 用户访问客户端,客户端将请求认证服务器. 2. 用户选择是否给予客户端授权 3.用户授权后,认证服务器将用户导向客户端事先定义好的重定向的地址,同时会附上一个授权 ...

  6. 導出Excel方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  7. pavenet资源

    网络结构:http://www.cnblogs.com/fariver/p/7449563.html 源码:https://github.com/sanghoon/pva-faster-rcnn 训练 ...

  8. Day 14A 网络编程入门

    ---恢复内容开始--- 计算机网络基础 计算机网络是独立自主的计算机互联而成的系统的总称,组建计算机网络最主要的目的是实现多台计算机之间的通信和资源共享.今天计算机网络中的设备和计算机网络的用户已经 ...

  9. torch.nn.Linear()函数的理解

    import torch x = torch.randn(128, 20) # 输入的维度是(128,20)m = torch.nn.Linear(20, 30) # 20,30是指维度output ...

  10. 怎样从SpringMVC返回json数据

    Srping3中配置 maven依赖pom.xml 需要jackson库的依赖 <dependency> <groupId>org.codehaus.jackson</g ...