暂无链接

旅程

【题目描述】

您曾经带领着我,穿过我的白天的拥挤不堪的旅程,而到达了我的黄昏的孤寂之境。在通宵的寂静里,我等待着它的意义。

神即将带领一些人去他们的孤寂之境,由于这个世界的不稳定,地点之间的有向道路会不定期地毁坏,出于工作准备,神想知道在某些道路毁坏之后某两点之间的最短路。

就是给定一个有向图,现有两个操作,操作111是删除一条边(一条边可重复删除),操作222是询问两个点之间的最短路。

【输入】

第111行两个正整数n,mn, mn,m,分别表示图的点数和操作数。

第222行至第n+1n+1n+1行每行nnn个正整数,为图的邻接矩阵,第iii行第jjj列的数表示点iii和点jjj间距离,保证对角线为000。

接下来mmm行每行三个正整数c,x,yc,x,yc,x,y,ccc表示操作种类,为111或222,当 c=1c=1c=1时表示删除xxx与yyy相连的边,当c=2c=2c=2时表示询问xxx到yyy的最短路,若不可达则输出−1−1−1。

【输出】

输出若干行,每个222操作对应一行,答案为询问中xxx到yyy的最短路或−1−1−1。

【输入样例】

5 6
0 6 6 10 10
2 0 7 8 6
10 5 0 10 3
9 5 8 0 7
4 9 8 3 0
1 2 3
1 4 1
2 1 3
1 4 2
1 1 2
2 4 1

【输出样例】

6
11

【提示】

数据规模与约定

对于30%30\%30%的数据:n,m≤10n,m≤10n,m≤10;

对于50%50\%50%的数据:n,m≤50n,m≤50n,m≤50;

对于100%100\%100%的数据:n≤200,m≤100000n≤200,m≤100000n≤200,m≤100000, 操作111不超过200200200次,边权不超过100001000010000。

题解

离线操作,倒着加边,每次加边就用边的两端点作为中继点做一次类似Floyed\mathcal{Floyed}Floyed的更新,复杂度O(n3)O(n^3)O(n3)。

代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int M=205,N=1e5+5;
struct sd{int op,a,b;}ope[N];
int mmp[M][M],dis[M][M],gg[M][M],ans[N],tot,n,m;
void up(int a){for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)dis[i][j]=min(dis[i][j],dis[i][a]+dis[a][j]);}
void in()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)scanf("%d",&mmp[i][j]),dis[i][j]=mmp[i][j];for(int i=1,op,a,b;i<=m;++i){scanf("%d%d%d",&op,&a,&b);if(op==1)gg[a][b]++,dis[a][b]=inf;ope[i]=(sd){op,a,b};}
}
void ac()
{for(int k=1;k<=n;++k)for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);for(int i=m,a,b;i;--i){a=ope[i].a,b=ope[i].b;if(ope[i].op==2)ans[++tot]=dis[a][b]>1e9?-1:dis[a][b];else if(--gg[a][b]==0)dis[a][b]=min(dis[a][b],mmp[a][b]),up(a),up(b);}for(int i=tot;i>=1;--i)printf("%d\n",ans[i]);
}
int main(){in(),ac();}

[2018.10.25 T3] 旅程相关推荐

  1. 10天精读掌握:计算机组成与设计(COAD:Patterson and Hennessy) (第2天 2018/10.25)

    十天精读掌握计算机组成与设计:第2天 2018/10.25 1. 第4次周计划概览 2. 今日学习成果 今日成果简述 完成如下目录学习 今日笔记 3. 今日时间表 4. 今日反思 5. 明日目标 今天 ...

  2. 2018.10.25【NOIP练习】最大疯子树(树形DP)

    传送门 解析: 其实简单推一下我们发现一个疯子树内部任何一条路径上点权都是单峰下凸的. 证明也很简单,不过请记住一点,考场上没有必要去想证明,除非你时间真的很充裕. 必要性:如果不是单峰下凸,则不是疯 ...

  3. CCSP 2018,杭州电子科技大学,2018/10/25

    前言 杭州东站到杭电蛮近的.支付宝真是个好东西. 10月是杭州的旅游旺季,真的很难找到还不错的酒店住,建议提前3个月预定. 比赛 竞赛前相关:https://www.ccf.org.cn/c/2018 ...

  4. 基于openFrameworks 三维重建 2018.10.25

    一.环境配置 1.ubuntu16.04系统  下载地址:https://www.ubuntu.com/download/desktop 2.opencv2.4.9第三方依赖库  下载网站:http: ...

  5. [2018.10.25]高通QFIL刷机:高通sdm845_la2.0用QFIL软件meta_build和flat_build刷机

    [1 代码准备] (i)amss_standard_oem:高通源码 (ii)test_device:amss_standard_oem对应的二进制文件(高通已经编译) (iii)caf:高通源码对应 ...

  6. c语言程序设计实验指导交大答案,C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc...

    C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案--2018.10修改.doc 实验一 Visual C集成环境实验内容(一)程序改错1.(1)无法运行(2)将第二个C程序重 ...

  7. 【比赛报告】2018.10.11校赛[8-2情人节欢乐赛] NOIP练习赛卷十二

    比赛时间:2018.10.10 选手:lrllrl 成绩 100+100+100=300 用时:约1h T1 果实计数 显然易得,答案为 b n m o d    k b^n\mod k bnmodk ...

  8. 2018.10.9模拟赛

    2018.10.9模拟赛 T1 trade 正解:贪心 据说lyd讲过但并没有印象QAQ,考场上现推浪费了不少时间 其实就开个小根堆,每次把堆顶取出来看它是不是比当前的 a[i]a[i]a[i] 小, ...

  9. RAD Studio破解补丁合集(2018.12.25)

    免责申明: 所有破解补丁均来自于网络,本人只负责收集整理,供大家测试研究之用.不提供相应的产品技术支持和服务. 本破解补丁合集只可用于个人测试研究之用,切勿用于商业用途,请在使用后的24小时内删除本破 ...

  10. 【比赛报告】2018.10.15校赛[2015-9-13 NOIP模拟赛 by hzwer] NOIP练习赛卷十四

    比赛时间:2018.10.15 选手:lrllrl 用时:2h 得分:100+10+90=200 最初想法是一个背包问题.首先背包问题的模型肯定是不行的,但是我们可以列出状态转移方程后发现,每个状态决 ...

最新文章

  1. iOS下JS与OC互相调用(七)--Cordova 基础
  2. 如何给女朋友解释什么是“元宇宙”?
  3. 未能解析引用的程序集……因为它对不在当前目标框架……
  4. c语言归并排序代码详细注释,C语言实现排序算法之归并排序详解
  5. 七年前将UC卖给马云,套现300亿的何小鹏,现今再创新奇迹?播报文章
  6. Java 重定位 —— redirect:
  7. 上海出租车价格计算方法
  8. LeetCode 1102. 得分最高的路径(优先队列BFS/极大极小化 二分查找)
  9. Linux的实际操作:文件目录类的实用指令(ln history)
  10. 【重磅】世界上最可信、最权威的人工智能数据和洞察来源:2021年人工智能指数报告...
  11. Torch环境搭建遇到的问题
  12. php for循环可以变量关联数组,数组与字符串,变量之间的转换+数组元素的回调处理+用for()循环来遍历关联数组...
  13. Android 图形解锁/手势解锁 / 手势密码 / 图案密码 / 九宫格密码
  14. 第一次天池大数据竞赛圆满落下帷幕
  15. Office application 版本
  16. Linux之/etc/login.defs创建用户默认设置文件介绍
  17. 云锵基金 2019 年 03 月简报
  18. Win11安卓子系统无法启动怎么办?安卓子系统启用虚拟机平台教程(确保在可选的Windows功能中启用虚拟机平台)
  19. linux中的sleep函数和delay函数
  20. 【存储】RAID0、RAID1、RAID3、RAID5、RAID6、混合RAID10、混合RAID50

热门文章

  1. MATLAB dsolve 函数求解偏微分方程一例
  2. java添加录音,大家说说java程序里怎么插入视频和音频啊
  3. 快速突破算法之位运算
  4. python学习笔记--python数据类型
  5. 快速排序算法--两个小人扔萝卜
  6. #图# #SPFA# ----- codevs1021 玛丽卡
  7. 14.19 InnoDB and MySQL Replication InnoDB 和MySQL 复制:
  8. ASP.NET WEB API简介
  9. Android高级模糊技术[转]
  10. SpringApplication.run方法分析