题目传送们

题目梗概

给出一个有mm条边(有边权)nn个点的有向图。
给出QQ个询问ai,bi,ciai,bi,ci,询问aiai到bibi边数不超过cici的路径和的最小值,且要求该路径上的边权递增。

解题思路

因为有边权递增的限制,不难想到把所以边排序之后一条条插入。
考虑一个数组f[i][j][k]f[i][j][k]表示从ii到jj的路径经过边数为kk的最小值。
以每个节点为起点来考虑这个问题,再考虑插入了一条边,显然需要修正
f[i][y[j]][k]=min(f[i][y[j]][k],f[i][x[j]][k−1])f[i][y[j]][k]=min(f[i][y[j]][k],f[i][x[j]][k-1]),第一眼看好像有后效性,仔细思考后并没有,因为题目中有边权递增的限制。

新姿势

一个多维的量,比如上述DP的f[i][j][k]f[i][j][k],当我们访问地址的时候显然需要做两次乘法和一次加法,如果我们提前开指针指向f[i][j]f[i][j],那么只需要做一次加法,事实证明使用这个写法可以得到显著的优化。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define min(x,y) ((x)<(y)?(x):(y))
using namespace std;
const int maxm=5005,maxn=155;
struct jz{int x,y,w;bool operator<(const jz&b)const{return w<b.w;}
}a[maxm];
int n,m,Q,f[maxn][maxn][maxn],t;
int main(){freopen("exam.in","r",stdin);freopen("exam.out","w",stdout);scanf("%d",&t);while (t--){scanf("%d%d%d",&n,&m,&Q);for (int i=1;i<=m;i++) scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].w);sort(a+1,a+1+m);memset(f,63,sizeof(f));for (int i=1;i<=n;i++) f[i][i][0]=0;for (int i=1;i<=n;i++)for (int j=1;j<=m;j++){int *f1=f[i][a[j].x],*f2=f[i][a[j].y];for (int k=1;k<=n;k++) f2[k]=min(f2[k],f1[k-1]+a[j].w);}while (Q--){int x,y,z;scanf("%d%d%d",&x,&y,&z);int ans=f[0][0][0];z=min(z,n);for (int i=0;i<=z;i++) ans=min(ans,f[x][y][i]);if (ans==f[0][0][0]) printf("-1\n");else printf("%d\n",ans);}}return 0;
} 

SPOJ ACPC13——Increasing Shortest Path相关推荐

  1. Problem C. Increasing Shortest Path【贪心 最短路-DP】

    题意 给一个图,nnn 个点 mmm 条边,qqq 次询问,求从 iii 到 jjj 的走过条数不超过 ccc 的最短路的长度,走路的时候过的边的长度必须是不减的 数据范围:150150150 点,3 ...

  2. P - The Shortest Path in Nya Graph HDU - 4725

    P - The Shortest Path in Nya Graph HDU - 4725 最短路 不是 每两个点之间按层数设置边权 + 额外边权 TLE 是 相邻两层之间设置边权 + 额外边权 需注 ...

  3. [CF843D]Dynamic Shortest Path

    [CF843D]Dynamic Shortest Path 题目大意: 给定一个带权有向图,包含\(n(n\le10^5)\)个点和\(m(m\le10^5)\)条边.共\(q(q\le2000)\) ...

  4. zoj 2760 How Many Shortest Path 最大流

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...

  5. OSPF(Open Shortest Path First开放式最短路径优先)

    **协议** OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(a ...

  6. 4kyu Path Finder #2: shortest path

    4kyu Path Finder #2: shortest path 题目背景: Task You are at position [0, 0] in maze NxN and you can onl ...

  7. AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_C All Pairs Shortest Path Input ...

  8. AOJ GRL_1_B: Shortest Path - Single Source Shortest Path (Negative Edges) (Bellman-Frod算法求负圈和单源最短路径)

    题目链接: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_B Single Source Shortest Path ( ...

  9. AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_A Single Source Shortest Path In ...

最新文章

  1. 利用java做一个简单的计算器
  2. 图神经网络时代的深度聚类
  3. Java架构师要具备哪些能力?
  4. JDK 命令之 jar -- 压缩/解压缩工具
  5. 新一代企业操作系统:专属钉钉解决方案全新上线
  6. Python嵌套定义函数增强reduce()函数功能
  7. 对多线程程序,单核cpu与多核cpu如何工作相关的探讨
  8. ubuntu需要多大的固态硬盘_揭秘:为什么SSD固态会越用越慢?关键点就在这里,你了解了吗...
  9. mysql如果中途报错则_Mysql的下载安装全过程(包括中途遇到的问题)
  10. Navicat MySql 注册码
  11. 百度地图怎么不显示服务器地址,百度地图使用指南
  12. 贴片电阻封装规格及阻值标注方法
  13. 关于使用ajax动态输出cnzz统计代码的问题
  14. matlab数据处理的优缺点,数字滤波的优缺点分析
  15. 433 490 868 915Mhz lora频段贴片天线方案 CA-S01 CrossAir贴片天线
  16. adb无线连接不上 解决办法
  17. 用纯Python就能写一个漂亮的网页
  18. Cesium隐藏版权信息
  19. 计算机专业英语推荐信,关于英文推荐信范文3篇
  20. 玩转Bootstrap(JS插件篇)

热门文章

  1. 管理者,最重要的100句话
  2. python中次方怎么表示_python中n次方怎么表示
  3. Type-C潮流下 如何衡量一款数据线好坏?
  4. 电信网通证实台湾地震影响内地访问国际网站(12月27日)
  5. 虚拟机和宿主机通过socket通信【C4】
  6. java定义hashmap_Java用自定义的类型作为HashMap的key
  7. 不是美术生学3D建模多久能上手?靠自学很难学成功吗?
  8. 行人重识别 (Re-ID)数据集介绍
  9. 开个水果店选址在哪,水果店选址的小窍门
  10. 数字模型制作规范(转自Unity3D群)