摘要: http://poj.org/problem?id=3268 有一个点X开party 求其他所有点 去的路程和返程的和的最小值中的最大值 这里有一个小技巧 总是把X当做原点 返程是正常的最短路 去程就把路径翻转 求最短路 这样只需要两次求最短路 阅读全文
posted @ 2017-02-14 23:21 Lorazepam 阅读(202) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3259 这道题的意思就是 考虑从任意一个点出发 经过任意回路 (普通道路是双向 虫洞是单向并且是负边) 问回到出发点时 时间是不是小于 出发时的时间 最开始直接想求所有点 到自己点的最短路 做着做着发现 如果可以的话 那不是没有最短路 因为每次都 阅读全文
posted @ 2017-02-14 23:17 Lorazepam 阅读(221) 评论(0) 推荐(0) 编辑
摘要: floyd-warshall算法 通过dp思想 求任意两点之间最短距离 重复利用数组实现方式dist[i][j] i - j的最短距离 for(int k = 1; k <= N; k++) for (int i = 1; i <= N; i++) for (int j = 1; j <= N; j 阅读全文
posted @ 2017-02-14 23:10 Lorazepam 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 首先两个算法都是常用于 求单源最短路径 关键部分就在于松弛操作 实际上就是dp的感觉 if (dist[e.to] > dist[v] + e.cost) { dist[e.to] = dist[v] + e.cost; ... } bellman_ford O(E*V) 但是配合队列可以 有spf 阅读全文
posted @ 2017-02-14 22:59 Lorazepam 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 书上介绍了两种存储图的方式 >> 1、邻接矩阵 2、邻接表 邻接矩阵的优势在于 可以快速读取两个节点的连通情况 和权值O(1) 但是内存消耗太大 特别是图比较稀疏的时候浪费非常多 那么久有了邻接表的方式 struct Edge { int to , cost} vector<Edge> G[MAXV 阅读全文
posted @ 2017-02-14 22:49 Lorazepam 阅读(198) 评论(0) 推荐(0) 编辑