最短路构造最短路95 C. Volleyball
Describe
n个点,m条边数据,n条出租车数据,出租车有一个距离上线ti和一个固定花费值ci,问你从s到e的最小出租车花费是多少,不能到达则输出-1
Solution
建两次图,第一次建造距离图,根据距离图进行n次最短路,确定一个最短路map,然后根据这个最短路地图进行第二次建图,遍历每个点,如果最短距离小于出租车上线则进行建图加边操作,根据第二次建图求最短路,进行输出/判断
Code
#include <bits/stdc++.h>using namespace std;
typedef long long ll;
const int maxn = 1e3 + 1e2;
const long long inf = 1e18;
int n,m,s,e;struct node{int to,cost,pre;
}edge[maxn*maxn];int id[maxn],cnt;
int vis[maxn];ll dis[maxn][maxn];
ll retdis[maxn];queue<int> q;void init(){memset(id,-1,sizeof(id));cnt = 0;
}void add(int from,int to,int cost){edge[cnt].to = to;edge[cnt].cost = cost;edge[cnt].pre = id[from];id[from] = cnt++;
}void spfa(int s,ll *d){memset(vis,0,sizeof(vis));while(q.size())q.pop();for(int i = 1;i <= n;++i){d[i] = inf;}d[s] = 0;q.push(s);vis[s] = 1;while(q.size()){int now = q.front();q.pop();vis[now] = 0;for(int i = id[now];~i;i = edge[i].pre){int to = edge[i].to;int cost = edge[i].cost;if(d[to] > d[now] + cost){d[to] = d[now] + cost;if(!vis[to]){vis[to] = 1;q.push(to);}}}}
}
int main()
{while(~scanf("%d%d%d%d",&n,&m,&s,&e)){int a,b,v;init();for(int i = 1;i <= m;++i){scanf("%d%d%d",&a,&b,&v);add(a,b,v);add(b,a,v);}for(int i = 1;i <= n;++i)spfa(i,dis[i]);memset(edge,0,sizeof(edge));init();int ti,ci;for(int i = 1;i <= n;++i){scanf("%d%d",&ti,&ci);for(int j = 1;j <= n;++j){if(i == j)continue;if(dis[i][j] <= ti){add(i,j,ci);}}}spfa(s,retdis);if(retdis[e] == inf){puts("-1");}else{printf("%lld\n",retdis[e]);}}return 0;
}
最短路构造最短路95 C. Volleyball相关推荐
- 最短路和次短路问题,dijkstra算法
1 /* 2 *题目大意: 3 *在一个有向图中,求从s到t两个点之间的最短路和比最短路长1的次短路的条数之和; 4 * 5 *算法思想: 6 *用A*求第K短路,目测会超时,直接在dijkstra算 ...
- poj3463 最短路和次短路 计数
这道题就是让你求出有向图中最短路和比最短路长1的路的数量, 我们求出次短路和最短路的数量即可解决这道题 /* 求s到t的最短路与次短路(这里要求只比最短路多1)的条数之和 联想到最小,次小的一种更新关 ...
- 什么原因导致芯片短路_PCB电路板短路的原因及解决方法-EDA/PCB-与非网
[导读]焊接短路(如:连锡).PCB 短路(如:残铜.孔偏等).器件短路.组装短路.ESD/EOS 击穿.电路板内层微短路.电化学短路(如:化学残留.电迁移).其他原因造成的短路. 首先,了解一下常见 ...
- 解释一下java的短路运算,Java短路运算符和非短路运算符详解
Java短路运算符和非短路运算符详解 时间:2017-09-15 来源:互联网 你了解Java短路运算符和非短路运算符吗?短路运算符就是我们常用的"&&". ...
- 你知道什么是 短路与 和 短路非吗 ???
此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感兴趣的可以去看看: 先来说一下 与运算 和 或运算: & 和 |: & 与 (双方都成立 ,结果才为 tru ...
- 短路与 短路或 不短路与 不短路或
先来看牛客的一道题 如下语句通过算术运算和逻辑运算之后i和 j的结果是( ) int i=0; int j=0; if((++i>0)||(++j>0)) { //打印出i和j的值. } ...
- 针对常见的四种短路故障(单相接地短路,两相相间短路,两相接地短路,三相短路),可采取三种方法进行计算
短路电流计算/ Matlab编程计算 针对常见的四种短路故障(单相接地短路,两相相间短路,两相接地短路,三相短路),可采取三种方法进行计算: 1.实用短路电流计算 2.对称分量法计算 3.节点导纳法计 ...
- 【图论算法】 最短路,次短路,k短路总结
在图论里,最短路,次短路,k短路的问题很常见. 这里总结一下. 存图技巧 数据小,稠密图的一般用邻接矩阵 稀疏图,数据大一般用邻接表(vector,链式前向星都可) 邻接矩阵 const int ma ...
- BZOJ 2125 最短路 仙人掌最短路
为了证明我还活着所以我发了篇博客_ (:з」∠) _ 题意: 给定一张仙人掌图,n<=10000,多次询问两点间最短路. Q<=10000. 解析: 首先如果这是一棵树的话,那么我们只需要 ...
最新文章
- toolbar ,textfield,图片拉伸,Bundle
- github上好的c语言项目,2019 github热门项目
- 比特币现金支付接入日本便利店
- Apache搭建多个站点方法详解
- mybatis解决属性名和数据列名不一致
- Linux漏洞CVE整理
- 定位pure virtual method called问题
- 经常有职场上的朋友问我,要怎么去轻资产创业?
- QString转HTuple
- python读取HDF5数据
- 【STL源码剖析】STL六大组件功能与运用(目录)
- 使用wsimport命令将wsdl文件生成服务端以及客户端
- 基本农田卫星地图查询_水经注万能地图下载器软件主界面功能说明
- 利用matlab数学建模实例,matlab数学建模实例
- linux设置法语键盘布局,法语键盘布局图.doc
- java短信接口_短信接口-- java
- 【BackEnd--SSM 框架详解】Mybatis+Spring+SpringMVC学习笔记(完整详细版)
- 工业物联网创新方案亮相2018云栖大会
- Linux 加密与解密应用
- JVM学习笔记07-垃圾回收