UVA-10246 - Asterix and Obelix(dijkstra)
题意:图中有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)相关推荐
- Asterix and Obelix
uva10246:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&am ...
- uva 10256 The Great Divide
原题: Somewhere in Gaul, there is a little village very like the village where Asterix and Obelix live ...
- 【CodeForces】CF126B Password
题目地址: https://www.luogu.com.cn/problem/CF126B 题面翻译: Asterix,Obelix和他们的临时伙伴Suffix.Prefix已经最终找到了和谐寺.然而 ...
- 2023-01-06做题记录
牛客网小白月赛65 A-牛牛去购物 题目描述 牛牛带着 n 元钱去超市买东西,超市一共只有两款商品,价格为 a 元的篮球和价格为 b 元的足球,牛牛想把手里的钱尽可能花光,请问牛牛最少能剩多少钱? 输 ...
- UVA 10603 - Fill(dijkstra + 状态图)
题目链接 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- uva 11367 (Dijkstra+DP)
题意:一辆汽车在一张无向图中开告诉你每个城市加油的费用.每次给q个查询(起点,终点,油箱容量)问你最小花费是多少. 思路:一道Dijkstra状态的题目.在这种最短路问题中一维的dis数组记录的信息往 ...
- uva 10801 - Lift Hopping(最短路Dijkstra)
1 /* 2 题目大意: 3 就是一幢大厦中有0-99的楼层, 然后有1-5个电梯!每个电梯有一定的上升或下降速度和楼层的停止的位置! 4 问从第0层楼到第k层最少经过多长时间到达! 5 6 思路:明 ...
- uva 11374(Dijkstra) HappyNewYear!!!
2013年最后一题,也是最后一篇随笔~祝大家新年快乐! 题意:在一张无向图中, 有两种公交线路,快线和慢线.现在有一个人想要从s->e但是他只有一张快线车票.所以快线只能乘坐一次,慢线可以随便乘 ...
- UVa 10806 Dijkstra,Dijkstra(最小费用最大流)
裸的费用流.往返就相当于从起点走两条路到终点. 按题意建图,将距离设为费用,流量设为1.然后增加2个点,一个连向节点1,流量=2,费用=0;结点n连一条同样的弧,然后求解最小费用最大流.当且仅当最大流 ...
- uva 10099 The Tourist Guide(单源最短路/spfa/dijkstra)
题目: 链接:点击打开链接 题意: 思路: 代码: #include <iostream> #include <cstring> #include <cstdio> ...
最新文章
- Weblogic基本概念整理
- 【Python】调用百度云API人脸检测 Face Detect
- Composer 常用命令总结(三)
- 多路RTSP-RTMP转RTMP定制版
- 多线程的那点儿事(之死锁)
- delphi 读取excel 两种方法
- Centos系统调优
- Houdini 官方HDA SideFX Labs 安装
- php区块链开发游戏,php程序员如何开发区块链、以太坊、智能合约的教程
- 2022 开源之夏 | Serverless Devs 陪你“变得更强”
- 洛谷 P3373 【模板】线段树 2 题解
- 自建云存储:Nextcloud vs. ownCloud vs. Seafile
- 最新江西建筑八大员(材料员)模拟真题集及答案解析
- 文件——创建文件并写入内容
- BeatMark X for mac(fcpx音乐卡点神器)
- 计算机网络---计算机网络体系结构与参考模型
- 什么是ISO体系认证?企业申请三体系认证的好处
- github上的开源项目中gif图片的制作软件
- HTC Vive与Oculus Rift全面对比
- arduino编码器计数_ARDUINO旋转编码器
热门文章
- 运动目标检测发展概述
- shenyu2.5.0解决Exceeded limit on max bytes to buffer:262144
- matlab电磁铁磁场,Matlab在电磁铁设计计算中的应用
- 长假之后,Scrum团队应该修改Sprint的结束时间吗?
- NMOS PMOS Charge pump flying capacitor充电泵
- 模电_热敏PTC电阻_NTC电阻-区别与作用-20190507
- w7怎么修改服务器dns,win7系统在哪修改dns?win7系统修改dns的详细步骤
- 使用ItextPdf给PDF文件加文字水印和图片水印
- ai中如何插入签名_如何在PDF文档中插入文本框?
- WordPress如何变更图片存储目录uploads并取消按年月存放?