博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dynamic Shortest Path CodeForces - 843D (动态最短路)
阅读量:4957 次
发布时间:2019-06-12

本文共 1146 字,大约阅读时间需要 3 分钟。

大意: n结点有向有权图, m个操作, 增加若干边的权重或询问源点为1的单源最短路.

 

本题一个特殊点在于每次只增加边权, 并且边权增加值很小, 询问量也很小. 我们可以用johnson的思想, 转化为差值最短路, 这样边权就在n-1以内, 可以直接暴力跑桶优化dijkstra.

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define REP(i,a,n) for(int i=a;i<=n;++i)#define PER(i,a,n) for(int i=n;i>=a;--i)#define hr putchar(10)#define pb push_back#define lc (o<<1)#define rc (lc|1)#define mid ((l+r)>>1)#define ls lc,l,mid#define rs rc,mid+1,r#define x first#define y second#define io std::ios::sync_with_stdio(false)#define endl '\n'using namespace std;typedef long long ll;typedef pair
pli;const int N = 1e5+10;const ll INF = 0x3f3f3f3f3f3f3f3f;int n, m, q;struct _ {int to,w;} E[N];vector
g[N];int vis[N], d2[N];ll d[N];priority_queue
, greater
> Q;queue
q2[N];void Dij() { memset(d,0x3f,sizeof d); Q.push(pli(d[1]=0,1)); while (Q.size()) { int u = Q.top().y; Q.pop(); if (vis[u]) continue; vis[u] = 1; for (auto &&id:g[u]) { auto &e = E[id]; ll dd = d[u]+e.w; if (dd

 

转载于:https://www.cnblogs.com/uid001/p/10628602.html

你可能感兴趣的文章
08号团队-团队任务5:项目总结会
查看>>
SQL2005 删除空白行null
查看>>
mysql备份与恢复
查看>>
混沌分形之迭代函数系统(IFS)
查看>>
边框圆角Css
查看>>
使用Busybox制作根文件系统
查看>>
jpg图片在IE6、IE7和IE8下不显示解决办法
查看>>
delphi之模糊找图
查看>>
Javascript模块化编程的写法
查看>>
大华门禁SDK二次开发(二)-SignalR应用
查看>>
oracle 使用job定时自动重置sequence
查看>>
集成百度推送
查看>>
在项目中加入其他样式
查看>>
在使用Kettle的集群排序中 Carte的设定——(基于Windows)
查看>>
【原】iOS中KVC和KVO的区别
查看>>
OMAPL138学习----DSPLINK DEMO解析之SCALE
查看>>
IoC的基本概念
查看>>
restframework CBV试图的4种方式
查看>>
大图居中,以1920px为例
查看>>
Python3 图片转字符画
查看>>