CF-95C-建图+最短路
http://codeforces.com/problemset/problem/95/C
n点m边(无向有权),每个点有一个司机(Ti,Ci)表示支付Ci元走Ti长度且必须停在节点才合法,一个司机只能使用最多一次,问从x-y最小花费。
n,m<=1000,预处理处任意两点最短距离,然后按照Ci建立新图,如果i点司机的Ti足够到达j那么就连边,最后在新图跑最短路。
#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define pii pair<int,int>
#define inf 0x3f3f3f3f3f3f3f3f
const int maxn=;
vector<pii>g1[maxn],g2[maxn];
LL d[maxn];
int T[maxn],C[maxn];
int n,m,x,y;
bool vis[maxn];
void spfa(int st,LL d[],vector<pii> g[]){
memset(vis,,sizeof(vis));
memset(d,inf,sizeof(LL)*(n+));
queue<int>q;
q.push(st);
vis[st]=,d[st]=;
while(!q.empty()){
int u=q.front();q.pop();vis[u]=;
for(auto e:g[u]){
int v=e.fi,w=e.se;
if(d[v]>d[u]+w){
d[v]=d[u]+w;
if(!vis[v])q.push(v),vis[v]=;
}
}
}
} int main(){
int u,v,w;
cin>>n>>m>>x>>y;
while(m--){
cin>>u>>v>>w;
g1[u].push_back(mp(v,w));
g1[v].push_back(mp(u,w));
}
for(int i=;i<=n;++i)cin>>T[i]>>C[i];
for(int i=;i<=n;++i){
spfa(i,d,g1);
for(int j=;j<=n;++j){
if(i==j || d[j]>T[i])continue;
g2[i].pb(mp(j,C[i]));
}
}
spfa(x,d,g2);
if(d[y]==inf)cout<<-;
else cout<<d[y]<<'\n';
return ;
}
CF-95C-建图+最短路的更多相关文章
- uva10067 Playing with Wheels 【建图+最短路】
题目:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1008">uva10067 Play ...
- 【建图+最短路】Bzoj1001 狼抓兔子
Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个 ...
- CodeForces 786B Legacy(线段树优化建图+最短路)
[题目链接] http://codeforces.com/problemset/problem/786/B [题目大意] 给出一些星球,现在有一些传送枪,可以从一个星球到另一个星球, 从一个星球到另一 ...
- 【转】Codeforces Round #406 (Div. 1) B. Legacy 线段树建图&&最短路
B. Legacy 题目连接: http://codeforces.com/contest/786/problem/B Description Rick and his co-workers have ...
- G. 神圣的 F2 连接着我们 线段树优化建图+最短路
这个题目和之前写的一个线段树优化建图是一样的. B - Legacy CodeForces - 787D 线段树优化建图+dij最短路 基本套路 之前这个题目可以相当于一个模板,直接套用就可以了. 不 ...
- 【SDOI2017】天才黑客(前后缀优化建图 & 最短路)
Description 给定一张有向图,\(n\) 个点,\(m\) 条边.第 \(i\) 条边上有一个边权 \(c_i\),以及一个字符串 \(s_i\). 其中字符串 \(s_1, s_2, \c ...
- BZOJ 4289: PA2012 Tax 差分建图 最短路
https://www.lydsy.com/JudgeOnline/problem.php?id=4289 https://www.cnblogs.com/clrs97/p/5046933.html ...
- HDU 4725 The Shortest Path in Nya Graph( 建图 + 最短路 )
主要是建图,建好图之后跑一边dijkstra即可. 一共3N个点,1~N是原图中的点1~N,然后把每层x拆成两个点(N+x)[用于连指向x层的边]和(N+N+x)[用于连从x层指出的边]. 相邻层节点 ...
- CF-787D-线段树建图+最短路
http://codeforces.com/problemset/problem/787/D 题目大意是给出一个有向图,有N个节点,初始节点在S,询问S到所有点最短路.边的读入方式有三种, 1 u v ...
- FJNU 1196 汪老司机(DP or 建图+最短路)
1196: 汪老司机 Time Limit: 1000 MS Memory Limit: 257792 KB 64-bit interger IO format: %lld ...
随机推荐
- web接口文档apidoc的使用
1.安装 npm install apidoc -g 2.新建src文件夹,里面放2个文件,test.js和apidoc.json 3.test.js /** * @api {get} /query_ ...
- centos 时钟配置
centos 7 时钟配置: timedatectl 命令: [root@localhost ~]# timedatectl --help timedatectl [OPTIONS...] COMMA ...
- 进行分支切换时,出现error的修复方法
进行分支切换时,出现如此错误,导致无法正常切换:error: The following untracked working tree files would be overwritten by ch ...
- 算法(第四版)C# 习题题解——1.4
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...
- 算法(第四版)C# 习题题解——1.3
写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 这一节内容可能会用到的库文件有 ...
- poj3984迷宫问题(DFS广搜)
迷宫问题 Time Limit: 1000MSMemory Limit: 65536K Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, ...
- Codeforces Gym 101623A - 动态规划
题目传送门 传送门 题目大意 给定一个长度为$n$的序列,要求划分成最少的段数,然后将这些段排序使得新序列单调不减. 考虑将相邻的相等的数缩成一个数. 假设没有分成了$n$段,考虑最少能够减少多少划分 ...
- 图像处理 Matlab实现线性点运算、非线性点运算、点运算与直方图、直方图均衡化
今天,我们学习了直方图.于是乎,回来我就用matlab代码实现一下.昨天受到道路检测老师课上一个内容的影响(对于道路裂缝的检测,我突发奇想,如果对于道路图像进行操作,是否能够让裂缝与道路分离,使得图像 ...
- objectarx 读取外部DWG图到当前图形
void CTrimeDraw::MyReadDwgFile(CString str){ AcDbDatabase pExternalDb(Adesk::kFalse); // 外部图形数据库 if ...
- Java基础学习-流程控制语句
在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我 ...