码题杯:我会修改图

原题链接:码题集OJ-我会修改图​​​​​​

题目大意:给你一张n个点(编号为1∼n),m条边(编号为1∼m)的无向图,图上每个点都有一个点权,权值分别为a1​,a2​,…,an​,你需要支持以下询问或操作,总共有q次。

1 x把编号为x(1≤x≤m)的边删除。

2 x y询问从点x(1≤x≤n)出发,能够到达多少个不同的点t(t!=x),满足ax​+at​=y。

思路:因为操作二需要找到与当前点连接的符合条件的点,所以可以很自然的想到并查集,但是操作一会导致并查集的图断开,并且并查集这个算法不能很好的分离出点。正难则反,如果记录每一个操作,并且倒序的进行,对于操作二,查询并不会出错,对于操作一,并查集可以很好的将二个不连通的图联通。但是仍然会超时,因为数据很大,所以需要加快操作二查询有效点的速度,可以开一个map数组,代表以某个点为根的并查集中的数的总数。

//冷静,冷静,冷静
//调不出来就重构
#pragma GCC optimize(2)
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pii;
const int N=4e5+10,mod=1000000007;
ll fa[N];//并查集的数组
ll p[N];//每个点的权值
pii op[N];//建立的边
bool st[N];//删除的边
struct node
{ll cz;//操作的类型,是删除边还是求符合条件的点 ll a;//如果是删除边,这个就是边的序号,如果是求点,这就是点的编号 ll b;//先加得到得值 
}kp[N];
map<ll,ll> cnt[N];//例如cnt[2],就是以2为首得并查集里面所有数得集合,cnt[2][1]就是以2为首的并查集中1的个数
ll find(ll x)
{if(x==fa[x])return x;return fa[x]=find(fa[x]);
}
void hb(pii v)
{ll x=v.first,y=v.second;x=find(x);y=find(y);if(x==y)return;if(cnt[x].size()>cnt[y].size())swap(x,y);fa[x]=y;for(auto vb:cnt[x])//因为合并了,那么就要将二个并查集中的数字数量也合并,对于这种情况,将小的并查集合并到大的并查集中 {cnt[y][vb.first]+=vb.second;}
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n,m,q;cin>>n>>m>>q;for(int i=1;i<=n;i++){cin>>p[i];fa[i]=i;cnt[i][p[i]]++;}for(int i=1;i<=m;i++){cin>>op[i].first>>op[i].second;}for(int i=1;i<=q;i++){cin>>kp[i].cz;if(kp[i].cz==1){cin>>kp[i].a;st[kp[i].a]=1; }else{cin>>kp[i].a>>kp[i].b;}}for(int i=1;i<=m;i++)//建立最终的并查集{if(st[i])continue;hb(op[i]);}vector<ll> ans;for(int i=q;i;i--){if(kp[i].cz==1)//相反的操作,最终合成出最初的并查集 {ll v=kp[i].a;hb(op[v]);}else{ll x=kp[i].a,y=kp[i].b;ll v=p[x];x=find(x);ans.push_back(cnt[x][y-v]-(y-v==v));//题目要求不能和自己 }}for(int i=ans.size()-1;i>=0;i--)cout<<ans[i]<<endl; return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/35819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为---VRRP基本配置(一)

10、VRRP 10.1 VRRP基本配置 10.1.1 原理概述 随着Internet的发展&#xff0c;人们对网络可靠性的要求越来越高。对于用户来说&#xff0c;能够时刻与外部网络保持通信非常重要&#xff0c;但内部网络中的所有主机通常只能设置一个网关IP地址&#xff0c;通过该出口网关实现…

CVE-2020-26048(文件上传+SQL注入)

简介 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自定义请求&#xff0c;可以将图像扩展修改为PHP&#xf…

Qt:2.环境搭建

目录 1.搭建需要的三个组件&#xff1a; 2.下载Qt安装包&#xff1a; 3.安装qt&#xff1a; 4.配置环境变量&#xff1a; 1.搭建需要的三个组件&#xff1a; C编译器&#xff08;gcc&#xff0c;cl.exe等&#xff09;Qt的SDK&#xff1a;软件开发工具包&#xff0c;Windows…

QT QML使用RabbitMQ

文章目录 步骤1:安装依赖步骤2:创建C++类处理RabbitMQ通信步骤3:将C++类与QML绑定步骤4:创建QML界面步骤5:配置项目文件总结要在Qt中使用RabbitMQ,并且使用QML作为界面部分,你需要结合Qt的C++和QML模块。以下是一个示例项目,它演示了如何使用C++库 SimpleAmqpClient 来…

更改网页标题(方法2)

如果你想要在多个页面中统一地改变特定页面的标题&#xff0c;而不是在每个页面中单独嵌入JavaScript代码&#xff0c;你可以使用一个外部JavaScript文件&#xff0c;并在需要改变标题的页面上引用这个文件。这样&#xff0c;你就不需要在每个页面上重复相同的代码了。 以下是…

Apache Doris 2.1.4 版本正式发布

亲爱的社区小伙伴们&#xff0c;Apache Doris 2.1.4 版本已于 2024 年 6 月 26 日正式发布。在 2.1.4 版本中&#xff0c;我们对数据湖分析场景进行了多项功能体验优化&#xff0c;重点修复了旧版本中异常内存占用的问题&#xff0c;同时提交了若干改进项以及问题修复&#xff…

HBase的概念、运行原理及分析

HBase 是一个分布式的、面向列的开源数据库&#xff0c;由 Apache 软件基金会维护&#xff0c;基于 Google 的 Bigtable 论文设计。它运行在 Hadoop 文件系统&#xff08;HDFS&#xff09;之上&#xff0c;并且能够处理大规模结构化数据的存储和访问。主要特点包括&#xff1a;…

linux桌面运维----第三天

1、Linux登录信息命令&#xff1a; whoami命令&#xff08;记住&#xff09; 作用&#xff1a;查看当前活动用户 ​语法&#xff1a;whoami 选项 ​选项&#xff1a; --help  在线帮助。--vesion  显示版本信息 2、获取命令帮助手册&#xff1a; man 命令名命令名 …

自动驾驶仿真Carla入门

Carla自动驾驶仿真平台学习指南 一、入门阶段 了解Carla基本概念 Carla&#xff1a;一个用于自动驾驶研究的开源仿真平台&#xff0c;提供高度可定制化的城市环境和车辆模型。支持Python和C API&#xff0c;用于控制仿真场景、车辆行为和传感器模拟。安装Carla 访问Carla官方…

C实现linux下自己的shell

strcmp函数 char *strsep(char **stringp, const char *delim); strsep 是 C 标准库字符串实用程序的一部分&#xff0c;定义在 <string.h> 头文件中。它可以用来从字符串对象中提取被给定定界符包围的标记。 strsep 需要两个参数-指向 char*的指针和指向 char 的指针。…

BaseModel的数据类型

在Pydantic的BaseModel中&#xff0c;可以使用Python的基本数据类型以及一些特殊的类型&#xff0c;包括但不限于以下几种&#xff1a; 1、基本数据类型: int: 整数 float: 浮点数 str: 字符串 bool: 布尔值 (True 或 False) bytes: 字节串 None: 用于表示可选字段的缺失…

玩转AI之四个免费热门的AI工具

2023年&#xff0c;可以说称之为人工智能元年&#xff0c;随着 AI 人工智能、机器学习技术的不断发展&#xff0c;各种 AI 算法的应用也越来越广泛&#xff0c;在AI这一领域中&#xff0c;软件、工具和网站如雨后春笋般涌现。下半年&#xff0c;预计会有更多王炸级别的产品问世…

打破数据分析壁垒:SPSS复习必备(十)

Means过程 统计学上的定义和计算公式 定义&#xff1a;Means过程是SPSS计算各种基本描述统计量的过程&#xff0c;其实就是按照用户指定条件&#xff0c;对样本进行分组计算均数和标准差&#xff0c;如按性别计算各组的均数和标准差。 用户可以指定一个或多个变量作为分组变…

java基于ssm+jsp 社区生活超市管理系统

1前台首页功能模块 社区生活超市管理系统 &#xff0c;在社区生活超市管理系统可以查看首页、商品信息、我的、跳转到后台等内容&#xff0c;如图1所示。 图1系统首页界面图 用户登录、用户注册&#xff0c;通过注册填写用户账号、密码、用户姓名、性别、用户手机、送货地址等…

观测云 VS 开源自建

观测云是一款面向全技术栈的监控观测一体化产品方案&#xff0c;具备强大而丰富的功能&#xff0c;目标是帮助最终用户提升监控观测的能力&#xff0c;化繁为简&#xff0c;轻松的构建起完整的监控观测体系。同时能够帮助整个企业的开发技术团队从统一的观测能力上获得完整的收…

ACL 2023事件相关(事件抽取、事件关系抽取、事件预测等)论文汇总

ACL 2023事件抽取相关(事件抽取、事件关系抽取、事件预测等)论文汇总&#xff0c;后续会更新全部的论文讲解。 Event Extraction Code4Struct: Code Generation for Few-Shot Event Structure Prediction 数据集&#xff1a;ACE 2005 动机&#xff1a;与自然语言相比&#xf…

QStyledItemDelegate 和 QItemDelegate 的作用

在Qt中&#xff0c;QStyledItemDelegate和QItemDelegate是用于自定义和控制项视图控件&#xff08;如QListView、QTableView、QTreeView&#xff09;中项的显示和编辑的委托类。它们提供了对项的外观和编辑行为的定制能力。尽管它们在功能上有相似之处&#xff0c;但它们之间有…

文件上传漏洞---Pyload

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 本文重点从靶场案例分析文件上传漏洞常见的Pylod&#xff0c;本文演示靶场upload-labs 一.文件类型---Pyload 不同的文件对应不同的文件类型&#xff0c;后端代码通过限制特定的文件类型…

fastadmin框架修改前端时间戳格式的时区

一、上传文件 将 moment-timezone-with-data.js 和 moment-timezone-with-data.min.js 文件上传到项目的 \public\assets\libs\moment\ 文件夹中。 二、配置中引入文件 在 \public\assets\js\require-backend.js 文件中增加所引入文件的配置: moment-timezone-with-data: …

RISC-V教学短视频同类视频调研报告

调研方向介绍 RV相关教学类短视频不多&#xff0c;所以我想选取多个单独维度进行调研&#xff0c;如“RV短视频”&#xff08;非教学类&#xff0c;如推广产品&#xff09;&#xff0c;“教学类短视频”&#xff08;非RV题材&#xff09;&#xff0c;“RV教学视频”&#xff0…