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相关推荐

  1. 最短路和次短路问题,dijkstra算法

    1 /* 2 *题目大意: 3 *在一个有向图中,求从s到t两个点之间的最短路和比最短路长1的次短路的条数之和; 4 * 5 *算法思想: 6 *用A*求第K短路,目测会超时,直接在dijkstra算 ...

  2. poj3463 最短路和次短路 计数

    这道题就是让你求出有向图中最短路和比最短路长1的路的数量, 我们求出次短路和最短路的数量即可解决这道题 /* 求s到t的最短路与次短路(这里要求只比最短路多1)的条数之和 联想到最小,次小的一种更新关 ...

  3. 什么原因导致芯片短路_PCB电路板短路的原因及解决方法-EDA/PCB-与非网

    [导读]焊接短路(如:连锡).PCB 短路(如:残铜.孔偏等).器件短路.组装短路.ESD/EOS 击穿.电路板内层微短路.电化学短路(如:化学残留.电迁移).其他原因造成的短路. 首先,了解一下常见 ...

  4. 解释一下java的短路运算,Java短路运算符和非短路运算符详解

    Java短路运算符和非短路运算符详解 时间:2017-09-15     来源:互联网 你了解Java短路运算符和非短路运算符吗?短路运算符就是我们常用的"&&". ...

  5. 你知道什么是 短路与 和 短路非吗 ???

    此链接通往 Bash Shell 编程学习的目录导航 ,从入门到放弃,感兴趣的可以去看看:   先来说一下 与运算 和 或运算: & 和 |: & 与 (双方都成立 ,结果才为 tru ...

  6. 短路与 短路或 不短路与 不短路或

    先来看牛客的一道题 如下语句通过算术运算和逻辑运算之后i和 j的结果是( ) int i=0; int j=0; if((++i>0)||(++j>0)) { //打印出i和j的值. } ...

  7. 针对常见的四种短路故障(单相接地短路,两相相间短路,两相接地短路,三相短路),可采取三种方法进行计算

    短路电流计算/ Matlab编程计算 针对常见的四种短路故障(单相接地短路,两相相间短路,两相接地短路,三相短路),可采取三种方法进行计算: 1.实用短路电流计算 2.对称分量法计算 3.节点导纳法计 ...

  8. 【图论算法】 最短路,次短路,k短路总结

    在图论里,最短路,次短路,k短路的问题很常见. 这里总结一下. 存图技巧 数据小,稠密图的一般用邻接矩阵 稀疏图,数据大一般用邻接表(vector,链式前向星都可) 邻接矩阵 const int ma ...

  9. BZOJ 2125 最短路 仙人掌最短路

    为了证明我还活着所以我发了篇博客_ (:з」∠) _ 题意: 给定一张仙人掌图,n<=10000,多次询问两点间最短路. Q<=10000. 解析: 首先如果这是一棵树的话,那么我们只需要 ...

最新文章

  1. toolbar ,textfield,图片拉伸,Bundle
  2. github上好的c语言项目,2019 github热门项目
  3. 比特币现金支付接入日本便利店
  4. Apache搭建多个站点方法详解
  5. mybatis解决属性名和数据列名不一致
  6. Linux漏洞CVE整理
  7. 定位pure virtual method called问题
  8. 经常有职场上的朋友问我,要怎么去轻资产创业?
  9. QString转HTuple
  10. python读取HDF5数据
  11. 【STL源码剖析】STL六大组件功能与运用(目录)
  12. 使用wsimport命令将wsdl文件生成服务端以及客户端
  13. 基本农田卫星地图查询_水经注万能地图下载器软件主界面功能说明
  14. 利用matlab数学建模实例,matlab数学建模实例
  15. linux设置法语键盘布局,法语键盘布局图.doc
  16. java短信接口_短信接口-- java
  17. 【BackEnd--SSM 框架详解】Mybatis+Spring+SpringMVC学习笔记(完整详细版)
  18. 工业物联网创新方案亮相2018云栖大会
  19. Linux 加密与解密应用
  20. JVM学习笔记07-垃圾回收

热门文章

  1. 安全协议设计与分析-32学时 考试复习
  2. hbase排序 ASCII码对照表
  3. 图像的灰度化灰度值的读取Matlab
  4. 东软大三上学期实训笔记-javase篇Day12
  5. Linux十大顶级发行版本
  6. dsa数字签名c语言编程,实验三DSA数字签名算法
  7. 【Data Science from Scratch 学习笔记】第2章 Python速成(上)
  8. JAVA的Map怎么判断为空_检查Java中的HashMap是否为空
  9. 云栖大会圆满落幕,极客天成精彩现身
  10. Java开发 - 消息队列之RabbitMQ初体验