uva 10246(最短路变形)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28972
思路:spfa求出每个点到其余顶点的最短路(最短路上的每个点的val都小于等于起点的val),然后又二维数组dp来保存,最后询问的时候就是枚举中间点i了,min{dp[i][u]+dp[i][v]+cost[i]};
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<queue> 6 #include<vector> 7 using namespace std; 8 #define inf 1<<30 9 10 struct Edge{ 11 int v,w; 12 Edge(){} 13 Edge(int vv,int ww):v(vv),w(ww){} 14 }; 15 16 vector<vector<Edge> >g; 17 int cost[111],dist[111],dp[111][111]; 18 bool mark[111]; 19 int n,m,Q; 20 21 void spfa(int s) 22 { 23 memset(mark,false,sizeof(mark)); 24 fill(dist,dist+n+1,inf); 25 dist[s]=0; 26 queue<int>que; 27 que.push(s); 28 while(!que.empty()){ 29 int u=que.front(); 30 que.pop(); 31 mark[u]=false; 32 for(int i=0;i<g[u].size();i++){ 33 int v=g[u][i].v,w=g[u][i].w; 34 if(dist[u]+w<dist[v]&&cost[v]<=cost[s]){ 35 dist[v]=dist[u]+w; 36 if(!mark[v]){ 37 mark[v]=true; 38 que.push(v); 39 } 40 } 41 } 42 } 43 for(int i=1;i<=n;i++)dp[s][i]=dist[i]; 44 } 45 46 47 int main() 48 { 49 int u,v,w,t=0; 50 while(~scanf("%d%d%d",&n,&m,&Q)){ 51 if(n==0&&m==0&&Q==0)break; 52 for(int i=1;i<=n;i++)scanf("%d",&cost[i]); 53 g.clear(); 54 g.resize(n+2); 55 while(m--){ 56 scanf("%d%d%d",&u,&v,&w); 57 g[u].push_back(Edge(v,w)); 58 g[v].push_back(Edge(u,w)); 59 } 60 for(int i=1;i<=n;i++) 61 for(int j=1;j<=n;j++)dp[i][j]=inf; 62 for(int i=1;i<=n;i++)spfa(i); 63 if(t)puts(""); 64 printf("Case #%d\n",++t); 65 while(Q--){ 66 scanf("%d%d",&u,&v); 67 int ans=inf; 68 for(int i=1;i<=n;i++){ 69 if(dp[i][u]==inf||dp[i][v]==inf)continue; 70 ans=min(ans,dp[i][u]+dp[i][v]+cost[i]); 71 } 72 if(ans==inf)ans=-1; 73 printf("%d\n",ans); 74 } 75 } 76 return 0; 77 } 78 79
View Code
uva 10246(最短路变形)相关推荐
- poj 2263 最短路变形——最小边的最大值
文章目录 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 本题:最短路变形--最小边的最大值 最短路变形--最大边的最小值 poj2253
- poj 2253 最短路变形——最大边的最小值
文章目录 本题:最短路变形--最大边的最小值 最短路变形--最小边的最大值 本题:最短路变形--最大边的最小值 题意: 给出两只青蛙.以及其他石头的坐标,需要求出可以到达另一只青蛙的所有路径中,青蛙跳 ...
- 【图论-最短路变形】想越狱的小杉
[图论-最短路变形]想越狱的小杉 Time Limit:1000MS Memory Limit:65536K Description 背景 Background 这次小杉来到了经典美剧<越狱& ...
- poj 1797(最短路变形)
题目链接:http://poj.org/problem?id=1797 思路:题目意思很简单,n个顶点,m条路,每条路上都有最大载重限制,问1->n最大载重量.其实就是一最短路的变形,定义wei ...
- nyoj 307(最短路变形)
解题思路:这道题和上一道题一样,也是最短路的变形,我之前的想法是二分答案,然后再dp去判断是否可以满足要求,但发现这样子的话会存在问题:因为一条路可能走多次,就无法保证其后效性. 看了别人的思路:先以 ...
- 最小花费(最短路变形+中南大学复试机试)
题目描述 在n个人中,某些人的银行账号之间可以互相转账.这些人之间转账的手续费各不相同.给定这些人之间转账时需要从转账金额里扣除百分之几的手续费,请问A最少需要多少钱使得转账后B收到100元. 输入 ...
- UVA 1416 最短路
UVA 1416 题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=sh ...
- L3-007. 天梯地图 -最短路变形
L3-007. 天梯地图 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校 ...
- ssl1762-工厂的烦恼【图论,最短路变形(最长路)】
题目 一个有向图,求它的最长路. 输入 5 5 1 2 2 2 4 9 1 3 7 3 4 1 4 5 6 输出 17 解题思路 就是最短路的算法进行一些更改.不过注意加判断 if (a[i][k] ...
- CERC2017 Gambling Guide,最短路变形,期望dp
题目链接 题面链接 题意 给定一个无向图,你需要从111点出发到达n" role="presentation" style="position: relativ ...
最新文章
- struts.xml配置详解
- Java基础学习总结(15)——java读取properties文件总结
- HTC G7 金卡 制作
- MySQL concat()函数
- linux安装typecho教程,Typecho上手指南
- 通用 PE 工具箱1.9.6(XP内核)by Uepon(李培聪)
- 系统学习深度学习(二十六)--BiRNN
- DC guide ---3
- java奶茶店管理系统_奶茶店的管理信息系统.doc
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】实验二十四:SD卡模块
- pandas之透视表
- ## Asset Store(unity商店) 如何下载已购买的资源?*
- 【亲自动手试验过的】硬盘免光驱安装Fedora5
- 9款好用的SSH客户端软件推荐
- VSCode 前端插件推荐
- tcsc工作原理matlab仿真,基于Matlab的TCSC建模与仿真研究.doc
- STM32人脸识别系统设计(程序代码+论文)
- ODR, BSRR, BRR的差别
- 基于SSM的备忘录管理系统
- 什么是服务器 ?服务器常见的系统和技术有哪些?
热门文章
- 线性回归模型异方差解决方法
- 使用PyInstaller脚本打包时提示Unable to open icon file 的一种情况
- 大数据求中位数(插值计算)
- csdn博客修改名字,不需要重新注册的。
- 计算机网络:计算路由表下一跳
- 按键精灵通过句柄获取窗口坐标_按键精灵9 得到鼠标指向的窗口句柄
- python实现矩阵的转置_Python实现矩阵转置的方法分析
- mysql数据,中国最新行政区划数据,到乡村共5级
- $('xx')[0].files[0]的意思
- Linux系统下修改DNS地址的三种方法: