uva10246最短路 + 枚举 + 数组记忆
思路:spfa求出每个点到其余顶点的最短路(最短路上的每个点的val都小于等于起点的val),然后又二维数组dp来保存,最后询问的时候就是枚举中间点i了,min{dp[i][u]+dp[i][v]+cost[i]};
题目链接
/*****************************************
Author :Crazy_AC(JamesQi)
Time :
File Name :
*****************************************/
#include <iostream>
#include <algorithm>
#include <string>
#include <stack>
#include <queue>
#include <vector>
#include <map>
#include <set>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <limits.h>
using namespace std;
#define FILL(a,b) memset(a,b,sizeof a)
#define CLR(a) memset(a,0,sizeof a)
template<class T> inline T Get_Max(const T&a,const T&b) {return a < b?b:a;}
template<class T> inline T Get_Min(const T&a,const T&b) {return a < b?a:b;}
const int maxn = 110;
const int inf = 1 << 30;
int dis[maxn],mark[maxn],cost[maxn],dp[maxn][maxn];
int n,m,q;
struct Edge{
int to,w;
Edge(){}
Edge(int to,int w):to(to),w(w){}
};
vector<vector<Edge> > G;
void spfa(int st)
{
// FILL(dis,inf);
fill(dis,dis + n + 2,inf);
// memset(dis,inf,sizeof dis);
// printf("%d\n",dis[1]);
FILL(mark,0);
queue<int> que;
dis[st] = 0;
mark[st] = 1;
que.push(st);
while(!que.empty())
{
int u = que.front();
que.pop();
mark[u] = 0;
for (int i = 0;i < G[u].size();i++)
{
int v = G[u][i].to;
int w = G[u][i].w;
if (dis[v] > dis[u] + w && cost[v] <= cost[st])
{
dis[v] = dis[u] + w;
if (!mark[v])
{
mark[v] = 1;
que.push(v);
}
}
}
}
for (int i = 1;i <= n;i++)
{
// printf("%d ",dis[i]);
dp[st][i] = dis[i];
}
// printf("\n");
}
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
int iCase = 0;
while(scanf("%d%d%d",&n,&m,&q) != EOF)
{
if (n == 0 && m == 0 && q == 0) break;
for (int i = 1;i <= n;i++)
scanf("%d",&cost[i]);
G.clear();
G.resize(n + 2);
int a,b,c;
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
G[a].push_back(Edge(b,c));
G[b].push_back(Edge(a,c));
}
// FILL(dp,inf);
for (int i = 1;i <= n;i++)
for (int j = 1;j <= n;j++)
dp[i][j] = inf;
for (int i = 1;i <= n;i++)
spfa(i);
if (iCase) puts("");
printf("Case #%d\n",++iCase);
while(q--)
{
int u,v;
int ans = inf;
scanf("%d%d",&u,&v);
for (int i = 1;i <= n;i++)
{
if (dp[i][u] == inf || dp[i][v] == inf) continue;
ans = Get_Min(ans,dp[i][u] + dp[i][v] + cost[i]);
}
if (ans == inf) printf("-1\n");
else printf("%d\n",ans);
}
}
return 0;
}
uva10246最短路 + 枚举 + 数组记忆相关推荐
- C#基础之结构体枚举数组
枚举 枚举的话,主要有两个比较吸引我的地方:一.规范常量的声明.使用和存储:二.不用记忆,方便枚举值的使用. 从规范性上来说,主要是避免同一类别的不同命名问题.诸如,在我们需要存储用户性别时, ...
- UVALive 6885 Flowery Trails 最短路枚举
题目连接: http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=129723 题意: 给你一个n点m图的边 1到n有多条最短路 ...
- 山东省第五届省赛题C Colorful Cupcakes(五维数组+记忆化搜索)
在写题目之前先来介绍一下记忆化搜索. 算法上依然是搜索的流程,但是搜索到的一些解用动态规划那种思想和模式保存.一般来说,动态规划总要遍历所有的状态,而搜索可以排除一些无效的状态.最最最最最主要的是,搜 ...
- POJ #1062 昂贵的聘礼 有限制的最短路 枚举+dijkstra求最短路
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- hdu 2363(最短路+枚举)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2363 思路:和之前hdu上做过的一题很像...就是先求求出所有的高度差,排序后枚举,每次都一次spfa ...
- LOJ #2316「NOIP2017」逛公园【最短路】【记忆化搜索】
dis[i]dis[i]dis[i]表示111号点到iii号点的最短距离,用spfaspfaspfa跑一遍即可. 考虑如何设定状态. 注意到题意要的是小于等于dis[n]+Kdis[n]+Kdis[n ...
- codeforces144——D. Missile Silos(最短路+枚举)
codeforces144--D. Missile Silos 原题链接 题意: 给定一个n点m边的无向图,给定起点,求和起点最短距离为l的点有多少个(可以是点也可以在边上) 思路: 首先求一遍最短路 ...
- 最短路的那些有趣的模型(不定期更新)
除起点与终点外,必须在规定的点上走. 将floyd的最外层设为规定的点而不是所有点. 最短路必须经过一些点,多组询问. 先求出所有点到这些点的最短路(反图dijkstra或Floyd),然后枚举min ...
- 形象的列举-C# 枚举
文章目录 简介 例子 分析点拨 博主写作不容易,孩子需要您鼓励 万水千山总是情 , 先点个赞行不行 简介 枚举类型用于声明一组命名常数. 定义枚举类型语法格式如下: enum 枚举数组名{枚举成员列表 ...
- 最短路计数(dp+最短路)
Description 给出一个 n 个顶点 m 条边的无向无权图,顶点编号为 1 到 n. 问从顶点 1 开始,到其他每个点的最短路有几条. Input 第一行 2 个正整数 n, m ( 1 ≤ ...
最新文章
- 【SeeMusic】音频编辑 ( 进入音频编辑页面 | 音频延迟设置 )
- 题解报告:hdu 5695 Gym Class(拓扑排序)
- Zookeeper内部的简单细节(一)
- 机器学习付费专栏的一些简介
- 操作系统上机题目(多进程2)
- 【C语言】将输入的10个数排序
- 计算机有没有开启ntp服务器,让你的Windows电脑成为一台NTP校时服务器
- Google Chrome 开发进度 官方Blog
- SecureCRT连接阿里云ECS服务器,经常掉线的解决方案
- [Hive]Hive常用的优化方法
- java 打包工具_Java打包Windows安装程序
- 【元胞自动机】基于matlab激进策略元胞自动机三车道(开放辅路,软件园影响)交通流模型【含Matlab源码 1298期】
- 乔布斯自传预售即夺下销售冠军
- VUE小需求——旋转小图标
- 芯片制造工艺中的衡量指标
- Webmin 远程命令执行漏洞(CVE-2019-15107)
- 【spring事务管理】
- 一个小白对接电子面单的哪些坑?
- 东风日产全新劲客首次搭载BOSE PERSONAL PLUS音响;艾比森举办秋季发布会推出多个新品 | 全球TMT...
- 大话赛宁云 | 演系列-超仿真网络空间“演武场”
热门文章
- Power BI数据可视化
- Global Shutter(全局快门)与Rolling Shutter(卷帘快门)的区别与比较
- Python xlsx转xls xls文件修复
- 移动端登录后,携带token请求其他页面接口提示token验证失败
- 塔夫斯大学计算机教授,塔夫茨大学工程学院虚拟教室取得成功!
- 幻想破灭!为何“每个儿童一台笔记本电脑”项目屡屡陷入困境?
- 计算机网络原理 实验3《IP数据包捕获及数据分析》
- html5文字布局排版欣赏,用文字作为主体排版的15个网页设计案例
- 一个词语解释了我万千的苦闷
- SIMPLE ONLINE AND REALTIME TRACKING