CF843D Dynamic Shortest Path spfa+剪枝
考试的T3,拿暴力+剪枝卡过去了.
没想到 CF 上也能过 ~
code:
#include <bits/stdc++.h>
#define N 100004
#define LL long long
#define inf 1000000000000000
using namespace std;
int go[N];
namespace IO
{
char *p1, *p2, buf[100000];
#define nc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1 ++ )
inline int rd() {
int x = 0;
char c = nc();
while (c < 48) {
c = nc();
}
while (c > 47) {
x = (((x << 2) + x) << 1) + (c ^ 48), c = nc();
}
return x;
}
inline void setIO(string s)
{
string in=s+".in";
string out=s+".out";
freopen(in.c_str(),"r",stdin);
freopen(out.c_str(),"w",stdout);
}
};
LL d[N];
vector<int>G[N];
int n,m,Q,done[N],inq[N];
struct edge
{
LL val;
int u,v;
}ee[N];
deque<int>q;
void dijkstra()
{
for(int i=1;i<=n;++i) d[i]=inf,inq[i]=0;
d[1]=0, inq[1]=1;
q.push_back(1);
while(!q.empty())
{
int u=q.front(); q.pop_front();
for(int i=G[u].size()-1;i>=0;--i)
{
edge e=ee[G[u][i]];
inq[e.u]=0;
if(d[e.v]>d[u]+e.val)
{
d[e.v]=d[u]+e.val;
if(!inq[e.v])
{
if(q.empty()||d[e.v]<d[q.front()]) q.push_front(e.v);
else q.push_back(e.v);
inq[e.v]=1;
}
}
}
}
}
int main()
{
// int t=clock();
// IO::setIO("input");
int i,j,flag=1;
n=IO::rd();
m=IO::rd();
Q=IO::rd();
// scanf("%d%d%d",&n,&m,&Q);
for(i=1;i<=m;++i)
{
ee[i].u=IO::rd();
ee[i].v=IO::rd();
ee[i].val=IO::rd();
G[ee[i].u].push_back(i);
}
dijkstra();
for(i=1;i<=n;++i) if(d[i]==inf) go[i]=0; else go[i]=1;
for(i=1;i<=Q;++i)
{
int opt,pp;
opt=IO::rd();
pp=IO::rd();
// scanf("%d%d",&opt,&pp);
if(opt==2)
{
for(j=1;j<=pp;++j)
{
int x=IO::rd();
++ee[x].val;
}
flag=0;
}
else
{
if(!go[pp])
{
printf("-1\n");
}
else
{
if(!flag)
{
flag=1;
dijkstra();
}
printf("%lld\n",d[pp]);
}
}
}
// printf("%d\n",clock()-t);
return 0;
}
CF843D Dynamic Shortest Path spfa+剪枝的更多相关文章
- [CF843D]Dynamic Shortest Path
[CF843D]Dynamic Shortest Path 题目大意: 给定一个带权有向图,包含\(n(n\le10^5)\)个点和\(m(m\le10^5)\)条边.共\(q(q\le2000)\) ...
- ZOJ 2760 - How Many Shortest Path - [spfa最短路][最大流建图]
人老了就比较懒,故意挑了到看起来很和蔼的题目做,然后套个spfa和dinic的模板WA了5发,人老了,可能不适合这种刺激的竞技运动了…… 题目链接:http://acm.zju.edu.cn/onli ...
- cf 843 D Dynamic Shortest Path [最短路+bfs]
题面: 传送门 思路: 真·动态最短路 但是因为每次只加1 所以可以每一次修改操作的时候使用距离分层的bfs,在O(n)的时间内解决修改 这里要用到一个小技巧: 把每条边(u,v)的边权表示为dis[ ...
- Dynamic Shortest Path CodeForces - 843D (动态最短路)
大意: n结点有向有权图, m个操作, 增加若干边的权重或询问源点为1的单源最短路. 本题一个特殊点在于每次只增加边权, 并且边权增加值很小, 询问量也很小. 我们可以用johnson的思想, 转化为 ...
- ACM学习历程—HDU4725 The Shortest Path in Nya Graph(SPFA && 优先队列)
Description This is a very easy problem, your task is just calculate el camino mas corto en un grafi ...
- Hdu 4725 The Shortest Path in Nya Graph (spfa)
题目链接: Hdu 4725 The Shortest Path in Nya Graph 题目描述: 有n个点,m条边,每经过路i需要wi元.并且每一个点都有自己所在的层.一个点都乡里的层需要花费c ...
- SPFA(Shortest Path Faster Algorithm)
特别说明 本文转载自三金(frinemore)的博客: 点这 前言 1.关于SPFA,它没死. 2.接下来的所有代码,都是自己手写的(未检查正确性,补充的代码有检查过,是对的),有错误请帮忙指出. S ...
- 【ZOJ2760】How Many Shortest Path
How Many Shortest Path 标签: 网络流 描述 Given a weighted directed graph, we define the shortest path as th ...
- Method for finding shortest path to destination in traffic network using Dijkstra algorithm or Floyd-warshall algorithm
A method is presented for finding a shortest path from a starting place to a destination place in a ...
随机推荐
- C++打印乘法表
#include <iostream> #include <Windows.h> #include <iomanip> using namespace std; i ...
- 20191125:Python中的上下文管理机制with
20191125:with上下文管理 with是一个上下文管理器,用于执行代码块所需要的运行的时候的上下文入口和出口.上下文管理器的典型用法包括保存和还原各种全局状态,锁定和解锁资源,关闭打开的文件等 ...
- java连接腾讯云上的redis
目录 腾讯云上的配置 redis连接单机和集群 依赖 pom.xml redis参数的配置文件 遗留问题 腾讯云上的配置 在安全组上打开相关的端口即可 "来源" 就是你的目标服务器 ...
- 查看IIS错误日志
部署在IIS中的程序,难免出现数据产生异常 在事件查看器中,可以看出来具体的错误信息,代码定位
- WinForm 无焦点获取键盘输入
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...
- 目标进程已退出,但未引发 CoreCLR 启动事件
目标进程已退出,但未引发 CoreCLR 启动事件.请确保将目标进程配置为使用 .NET Core.如果目标进程未运行 .NET Core,则发生这种情况并不意外 解决:更新SDK版本
- git bash push 本地的commit到远程 -- ssh keys设置
1. 检查是否已经创建 ssh keys git bash 下,cd ~/.ssh 如何出现“No such file or directory”,则表示需要创建一个ssh keys. 2. 创建新 ...
- iOS - 数据存储方式(本地化)
iOS中数据存储方式 一般使用以下4种:(已更新) .NSKeyedAchiever//序列化 存放对象 .NSUserDefaults//本质是plist存储 NSData.NSString.NSN ...
- OpenStack kilo版(2) keystone部署
部署在controller节点 配置数据库 MariaDB [(none)]> CREATE DATABASE keystone; Query OK, 1 row affected (0.00 ...
- 阿里云给自己实例扩容-扩展分区和文件系统_Linux系统盘
阿里云买了台服务器ecs 磁盘容量40g 发现已经用了30g了 赶紧扩容 进入 e'cs实例 进入左边菜单 存储与快照 然后选择右边的扩容 然后支付 成功后 进入服务器 df -h 发现怎么还是没变 ...