一开始想的是分类讨论,看那条边加了之后成不成环,如果不成环且权值在前n-1,则一定在MST里,不在前n-1则不在MST里;如果成环了,如果权值不在前n-1,则不在MST里,如果权值在前n-1,则需要判断环中其余边是不是都<wi,如果是,则在MST里面,否则就不在

然后问题就在于,怎么看环中其余边是不是都<wi

有两个想法:

一个是dfs遍历环统计最大值,但是考虑到最坏情况复杂度为NQ,因此不可能这么做

一个是维护树链RMQ,可能要用树剖来写,但是我不会QwQ

事实上这也是做法之一,但是不需要这么麻烦

题意:

有一个图,它有MST,对于每次询问都问是否能加一条边,使得该边在新图的MST中,如果是输出Yes,否则就是No

思路:

考虑将原边和查询边一起参与Kruskal的过程(其实就是将询问的边按边权离线,这样更容易地用DS维护)

如果是原边,则直接加入

如果是查询边,则直接看是否成环即可

为什么,因为它是从小到大加边的,所以此时如果成环了,环内其余边都<=wi,就不需要树链RMQ了

感觉将查询边一起参与Kruskal的过程很帅啊

Code:

#include <bits/stdc++.h>#define int long longusing namespace std;const int mxn=2e5+10;
const int mxe=2e5+10;struct ty{int u,v,w,id;
}e[mxe<<2];int N,M,Q,a,b,c;
int f[mxn],ans[mxn];int find(int x){return f[x]=(x==f[x])?x:find(f[x]);
}
void join(int u,int v){int f1=find(u),f2=find(v);if(f1!=f2) f[f1]=f2;
}
bool cmp(ty x,ty y){return x.w<y.w;
}
void solve(){cin>>N>>M>>Q;for(int i=1;i<=N;i++) f[i]=i; for(int i=1;i<=M;i++){cin>>a>>b>>c;e[i]={a,b,c,0};} for(int i=1;i<=Q;i++){cin>>a>>b>>c;e[M+i]={a,b,c,i};}sort(e+1,e+1+M+Q,cmp);for(int i=1;i<=M+Q;i++){if(e[i].id==0) join(e[i].u,e[i].v);else{if(find(e[i].u)!=find(e[i].v)) ans[e[i].id]=1;else ans[e[i].id]=0;}}for(int i=1;i<=Q;i++){if(ans[i]) cout<<"Yes"<<'\n';else cout<<"No"<<'\n';}
}
signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int __=1;//cin>>__;while(__--)solve();return 0;
}

【MST+离线】ABC235 E - MST + 1相关推荐

  1. 图论复习——最小生成树MST

    知识点 MST的构造 Boruvka算法常用于解决这类问题:给你n个点,每个点有点权,任意两个点之间有边权,边权为两个点权用过某种计算方式得出,求最小生成树.动图 MST上的确定性和存在性问题 最小生 ...

  2. mst算法matlab_基于并查集+Kruskal算法的matlab程序及最小生成树绘图

    学了一天最小生成树,稍稍总结一下,这是第一篇 kruskal算法 关于kruskal算法已有大量的资料,不再赘述,算法流程为: 得到邻接矩阵和权值: 初始化,连接距离最小的两点: 连接距离次小的两点, ...

  3. cisco MST配置

    MSTP(802.1):多实例生成树 配置: Switch(config)#spanning-tree mo mst//模式改为mst,默认所有的vlan在同一个组里 Switch(config)#s ...

  4. 思科交换机MST配置命令步骤-实例讲解

     配置MST的基本参数 启用MST的过程需要多不操作,它需要将一定的范围的VLAN映射到单个MSTI. 因为MST适用于多个VLAN的情况,所以它就比PVST+或RPVST+要求更多的其他配置.当用户 ...

  5. The Unique MST 判断生成树是否唯一

    The Unique MST 题目抽象:给你一个连通无向网,判断生成树是否唯一. 分析 :判定最小生成树是否唯一的一个正确思路为: 1) 对图中每条边,扫描其他边,如果存在相同权值的边,则对该边作标记 ...

  6. STP 4 - MST 和 PVST 对比 (侧重MST)

    802.1w = Rapid STP (uplinkFast & backbonefast 的功能被嵌入了,相当于自动生效) 802.1s = PVST/PVST+ (per VLAN spa ...

  7. HDU 4126 Genghis Khan the Conqueror MST + 树形DP 2011年福州现场赛F题

    题目大意: 就是现在给出一个图, N个点, M条边, N <= 3000, M <= N*N, 但是没有重边, 每条边都有一个权值, 图中没有自环 现在给出Q次询问, 每次询问表示如果更改 ...

  8. mobx在react中应用_借助React Native Elements,Jest和MobX MST可以轻松实现现实世界中的ReactNative应用...

    mobx在react中应用 by Qaiser Abbas 由Qaiser Abbas 借助React Native Elements,Jest和MobX MST可以轻松实现现实世界中的ReactNa ...

  9. BZOJ1453: [WC2005]Dface双面棋盘

    离线LCT维护MST,和3082的方法一样.然而比较码农,适合颓废的时候写. PS:线段树分治要好写得多,LCT比较自娱自乐. #include<bits/stdc++.h> using ...

最新文章

  1. ntp服务器响应每秒请求数量,批量、增量接口并发问题和NTP协议
  2. VMware10.0中安装CentOS8时提示客户机操作系统已禁用CPU,请关闭或重置虚拟机
  3. java: 找不到符号 符号: 方法 setOperation(java.lang.String) 位置: 类型为.......
  4. 上海市新能源汽车数据平台引入阿里云Lindorm数据库,成本下降20%
  5. 字节流读数据(一次读一个字节数组数据)
  6. 浅析SparkRPC源码(spark2.11)
  7. 关于使用类成员函数作为回调的方法
  8. Android Studio第二十七期 - RecycleView不同item布局
  9. 文件夹在哪里_在Mac电脑上截图和照片放在哪里?
  10. 解读核磁共振射频系统架构、模块结构及功能介绍
  11. 鸡汤:【转载】超级高效术,让你的人生效率快人10倍
  12. Vblog#1 English learning for science research
  13. INTO CORRESPONDING FIELDS OF、去掉前导零,增加前导0。不显示物料号的前导零
  14. Linux服务器 - 腾讯云服务器挂载云硬盘
  15. 牛客网刷题day21
  16. 使用WinRAR制作属于自己的单文件版软件
  17. ts 在vue中的使用总结
  18. OpenFlow学习笔记(一)——OpenFlow概要和OpenFlow1.0
  19. 正式进入Hadoop学习 不会再有比我还全面的大数据学习(三) Hadoop生态圈
  20. 经典面试题-搜狐和讯网Shell面试题

热门文章

  1. c语言 int大端转小端,C++将整型数据转换成大端或小端存储顺序
  2. Vue3+element-plus实现后台管理系统
  3. Web 基础——Tomcat
  4. 【路径规划】全局路径规划算法——A*算法(含python实现 | c++实现)
  5. for i in range(起始值,终点值,步长):
  6. 五大最受欢迎的BUG管理系统
  7. 我为什么喜欢Go语言123123
  8. IPAD没有说明的10件事
  9. 奥运互联网之张继科获胜后再现“冷漠脸“ 网友:看着让人放心
  10. 关于以太坊合并,你需要知道的一切