题目链接:uva 10246 - Asterix and Obelix

枚举起始点,以起始点的点权为最大值。然后维护两点之间的最短距离。

#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <algorithm>using namespace std;
const int  maxn = 100;
const int inf = 0x3f3f3f3f;
typedef pair<int,int> pii;int N, M, Q, W[maxn], D[maxn], ans[maxn][maxn];
bool done[maxn];
vector<pii> G[maxn];struct State {int u, d;State(int u = 0, int d = 0): u(u), d(d) {}bool operator < (const State& a) const { return d > a.d; }
};void init () {for (int i = 1; i <= N; i++) {G[i].clear();scanf("%d", &W[i]);}int u, v, w;for (int i = 0; i < M; i++) {scanf("%d%d%d", &u, &v, &w);G[u].push_back(make_pair(v, w));G[v].push_back(make_pair(u, w));}
}void Dijkstra(int s) {memset(D, inf, sizeof(D));memset(done, false, sizeof(done));D[s] = 0;priority_queue<State> que;que.push(State(s, D[s]));while (!que.empty()) {int u = que.top().u;que.pop();if (done[u]) continue;done[u] = true;for (int i = 0; i < G[u].size(); i++) {int v = G[u][i].first, w = G[u][i].second;if (W[v] > W[s]) continue;if (D[v] > D[u] + w) {D[v] = D[u] + w;que.push(State(v, D[v]));}}}for (int i = 1; i <= N; i++)for (int j = 1; j <= N; j++)ans[i][j] = min(ans[i][j], D[i] + D[j] + W[s]);
}int main () {int cas = 0;while (scanf("%d%d%d", &N, &M, &Q) == 3 && N + M + Q) {if (cas) printf("\n");init();memset(ans, inf, sizeof(ans));for (int i = 1; i <= N; i++)Dijkstra(i);int u, v;printf("Case #%d\n", ++cas);for (int i = 0; i < Q; i++) {scanf("%d%d", &u, &v);if (ans[u][v] == inf) printf("-1\n");else printf("%d\n", ans[u][v]);}}return 0;
}

uva 10246 - Asterix and Obelix(最短路)相关推荐

  1. UVA 10269 Super Mario,最短路+动态规划

    这个题目我昨晚看到的,没什么思路,因为马里奥有boot加速器,只要中间没有城堡,即可不耗时间和脚力,瞬间移动不超过L距离,遇见城堡就要停下来,当然不能该使用超过K次...我纠结了很久,最终觉得还是只能 ...

  2. Asterix and Obelix

    uva10246:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&am ...

  3. UVA 1001 Say Cheese(最短路)

    题意:阅读题....无限大的奶酪里有n个球形的洞.你的任务是帮助老鼠A用最短时间到达老鼠O的位置.奶酪里面的移动速度为10S一个单位,但是在洞里可以瞬间移动,求最短时间 思路:先耐心看题目...然后就 ...

  4. UVA 10801 Lift Hopping(最短路)

    思路:以每一层楼为顶点,每个电梯可以到达的两层楼之间的秒数为每一条边的权值,以此构建一个无向图.然后利用dijkstra求出最短的时间,注意每次换乘电梯需要等待60s(因为同一个电梯上的楼层是相互可达 ...

  5. uva 10256 The Great Divide

    原题: Somewhere in Gaul, there is a little village very like the village where Asterix and Obelix live ...

  6. 【CodeForces】CF126B Password

    题目地址: https://www.luogu.com.cn/problem/CF126B 题面翻译: Asterix,Obelix和他们的临时伙伴Suffix.Prefix已经最终找到了和谐寺.然而 ...

  7. 2023-01-06做题记录

    牛客网小白月赛65 A-牛牛去购物 题目描述 牛牛带着 n 元钱去超市买东西,超市一共只有两款商品,价格为 a 元的篮球和价格为 b 元的足球,牛牛想把手里的钱尽可能花光,请问牛牛最少能剩多少钱? 输 ...

  8. UVA 1416 最短路

    UVA 1416 题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=sh ...

  9. UVA 1376 Animal Run 最短路

    平面图最小割转最短路 书上是说以边为结点建图 但是我觉得好像以每块空白区域为结点建图会更自然点.把矩形的右上方编号为0,左下方编号为1,分别为起点终点 //#pragma comment(linker ...

  10. Uva(10048),最短路Floyd

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

最新文章

  1. usaco Sweet Butter(迪杰斯特拉(优先队列优化),bellman_ford算法模板)
  2. 解决js跨域调用WebApi的问题
  3. 页面间参数值传递含“%”的处理方法
  4. 流量卡官网源码【全解无后门】 修复添加教程
  5. MYSQL8 关键字(官方)
  6. Educoder Basemap和Seaborn 第一关:Seaborn
  7. 使用Microsoft Sync Framework做文件同步
  8. git reset/git checkout./撤销操作
  9. D1~D5 CIF 720P~1080P 视频各格式参数
  10. Debian 10 使用 rz sz 命令
  11. 一张对数字图像处理贡献最大的花花公子人体照
  12. 论文那些事—Admix: Enhancing the Transferability of Adversarial Attacks
  13. 锐龙cpu能装linux吗,AMD CPU怎么安装?AMD锐龙处理器与主板安装图解教程
  14. 打开word2007总是出现配置进度_最新版斑马进度计划软件更新了哪些功能?一起来探索 !...
  15. 【OpenCV】HSV颜色识别-HSV基本颜色分量范围
  16. VUE超超超!入门介绍
  17. crypto buuctf 异性相吸
  18. 谷歌浏览器升级到 80 后解决拦截cookie方案
  19. iOS 11降系统到iOS 10,苹果刷机图文教程
  20. DeptMapper

热门文章

  1. 【摄像头】Global Shutter(全局快门)与Rolling Shutter(卷帘快门)的区别与比较...
  2. 英语语法快速入门1--简单句(附思维导图)
  3. ACM/IOI 历年国家集训队论文集和论文算法分类整理
  4. 阿米巴经营之软件经营-写得不错留作记念
  5. 跳一跳html小游戏代码,100 行代码实现『跳一跳』辅助
  6. html5版微博qq登录,QQ和新浪微博登陆第三方的简单实现
  7. fastadmin项目实战踩坑
  8. TCP Reassembly
  9. 数据库数据模型理解 概念数据模型 逻辑数据模型 物理数据模型区别和联系
  10. I.MX6UL核心模块tf卡启动linux的实现