题意:图中有C个点,R条边,每个点有个权值,每条边也有距离值,求A到B点的最短距离+经过的点的最大值的和最小

分析:比如说我们要求出S,T的“最短路”,我们可以枚举最大中间节点,因为这条路必经经过一个最大中间节点.

比如说我们找到点U的时候,就假设U是S到T路径上点权最大的点,可以把图上点权大于U的点去掉

然后d[ U,S  ] + d[ U, T ] + w[U]便是假设u点权最大时候的“最短路”,每给出一个询问,查询即可。

// File Name: 10246.cpp
// Author: Zlbing
// Created Time: 2013/4/18 17:37:24

#include<iostream>
#include<string>
#include<algorithm>
#include<cstdlib>
#include<cstdio>
#include<set>
#include<map>
#include<vector>
#include<cstring>
#include<stack>
#include<cmath>
#include<queue>
using namespace std;
#define CL(x,v); memset(x,v,sizeof(x));
#define INF 0x3f3f3f3f
#define LL long long
#define REP(i,r,n) for(int i=r;i<=n;i++)
#define RREP(i,n,r) for(int i=n;i>=r;i--)
const int MAXN=105;int C,R,Q;
int P[MAXN];
struct Edge{int u,v,cost;
};
vector<Edge> edges;
vector<int> G[MAXN];
struct node{int u,cost;bool operator <(const node& rhs)const{return cost>rhs.cost;}
};
int V[MAXN][MAXN];
void dijkstra(int st)
{priority_queue<node> Q;node t,tt;t.u=st;t.cost=0;Q.push(t);memset(V[st],-1,sizeof(V[st]));V[st][t.u]=0;while(!Q.empty()){t=Q.top();Q.pop();for(int i=0;i<G[t.u].size();i++){Edge e=edges[G[t.u][i]];tt.u=e.v;tt.cost=t.cost+e.cost;if((V[st][e.v]==-1||V[st][e.v]>tt.cost)&&P[e.v]<=P[st]){V[st][e.v]=tt.cost;Q.push(tt);}}}
}
int main()
{int cas=0;//freopen("out.txt","w",stdout);while(~scanf("%d%d%d",&C,&R,&Q)){if(C==0&&R==0&&Q==0)break;if(cas)printf("\n");REP(i,1,C){scanf("%d",&P[i]);}REP(i,1,C)G[i].clear();edges.clear();printf("Case #%d\n",++cas);REP(i,1,R){int a,b,c;scanf("%d%d%d",&a,&b,&c);edges.push_back((Edge){a,b,c});edges.push_back((Edge){b,a,c});int m=edges.size();G[a].push_back(m-2);G[b].push_back(m-1);}REP(i,1,C)dijkstra(i);REP(i,1,Q){int a,b;scanf("%d%d",&a,&b);int ans=INF;REP(i,1,C){if(V[i][a]==-1||V[i][b]==-1)continue;ans=min(ans,V[i][a]+V[i][b]+P[i]);}if(ans==INF)printf("-1\n");elseprintf("%d\n",ans);}}return 0;
}

转载于:https://www.cnblogs.com/arbitrary/archive/2013/04/18/3029283.html

UVA-10246 - Asterix and Obelix(dijkstra)相关推荐

  1. Asterix and Obelix

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

  2. uva 10256 The Great Divide

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

  3. 【CodeForces】CF126B Password

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

  4. 2023-01-06做题记录

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

  5. UVA 10603 - Fill(dijkstra + 状态图)

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

  6. uva 11367 (Dijkstra+DP)

    题意:一辆汽车在一张无向图中开告诉你每个城市加油的费用.每次给q个查询(起点,终点,油箱容量)问你最小花费是多少. 思路:一道Dijkstra状态的题目.在这种最短路问题中一维的dis数组记录的信息往 ...

  7. uva 10801 - Lift Hopping(最短路Dijkstra)

    1 /* 2 题目大意: 3 就是一幢大厦中有0-99的楼层, 然后有1-5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置! 4 问从第0层楼到第k层最少经过多长时间到达! 5 6 思路:明 ...

  8. uva 11374(Dijkstra) HappyNewYear!!!

    2013年最后一题,也是最后一篇随笔~祝大家新年快乐! 题意:在一张无向图中, 有两种公交线路,快线和慢线.现在有一个人想要从s->e但是他只有一张快线车票.所以快线只能乘坐一次,慢线可以随便乘 ...

  9. UVa 10806 Dijkstra,Dijkstra(最小费用最大流)

    裸的费用流.往返就相当于从起点走两条路到终点. 按题意建图,将距离设为费用,流量设为1.然后增加2个点,一个连向节点1,流量=2,费用=0;结点n连一条同样的弧,然后求解最小费用最大流.当且仅当最大流 ...

  10. uva 10099 The Tourist Guide(单源最短路/spfa/dijkstra)

    题目: 链接:点击打开链接 题意: 思路: 代码: #include <iostream> #include <cstring> #include <cstdio> ...

最新文章

  1. Weblogic基本概念整理
  2. 【Python】调用百度云API人脸检测 Face Detect
  3. Composer 常用命令总结(三)
  4. 多路RTSP-RTMP转RTMP定制版
  5. 多线程的那点儿事(之死锁)
  6. delphi 读取excel 两种方法
  7. Centos系统调优
  8. Houdini 官方HDA SideFX Labs 安装
  9. php区块链开发游戏,php程序员如何开发区块链、以太坊、智能合约的教程
  10. 2022 开源之夏 | Serverless Devs 陪你“变得更强”
  11. 洛谷 P3373 【模板】线段树 2 题解
  12. 自建云存储:Nextcloud vs. ownCloud vs. Seafile
  13. 最新江西建筑八大员(材料员)模拟真题集及答案解析
  14. 文件——创建文件并写入内容
  15. BeatMark X for mac(fcpx音乐卡点神器)
  16. 计算机网络---计算机网络体系结构与参考模型
  17. 什么是ISO体系认证?企业申请三体系认证的好处
  18. github上的开源项目中gif图片的制作软件
  19. HTC Vive与Oculus Rift全面对比
  20. arduino编码器计数_ARDUINO旋转编码器

热门文章

  1. 运动目标检测发展概述
  2. shenyu2.5.0解决Exceeded limit on max bytes to buffer:262144
  3. matlab电磁铁磁场,Matlab在电磁铁设计计算中的应用
  4. 长假之后,Scrum团队应该修改Sprint的结束时间吗?
  5. NMOS PMOS Charge pump flying capacitor充电泵
  6. 模电_热敏PTC电阻_NTC电阻-区别与作用-20190507
  7. w7怎么修改服务器dns,win7系统在哪修改dns?win7系统修改dns的详细步骤
  8. 使用ItextPdf给PDF文件加文字水印和图片水印
  9. ai中如何插入签名_如何在PDF文档中插入文本框?
  10. WordPress如何变更图片存储目录uploads并取消按年月存放?