当前位置: 首页 > news >正文

2026.3.27 作业 - # AT_abc420_e [ABC420E] Reachability Query

题目描述

给定一个有 \(N\) 个顶点且没有边的无向图。
顶点编号为 \(1,2,\dots,N\),初始时所有顶点均为白色。
你需要处理共 \(Q\) 个如下三种类型的操作:

  • 类型 \(1\):在顶点 \(u\)\(v\) 之间添加一条无向边。
  • 类型 \(2\):如果顶点 \(v\) 是白色,则将其变为黑色;如果是黑色,则将其变为白色。
  • 类型 \(3\):判断从顶点 \(v\) 出发,经过若干条边(可以为零条)是否能够到达某个黑色顶点;如果可以,输出 Yes,否则输出 No

输入格式

输入由标准输入给出,格式如下:

\(N\) \(Q\)
\(\rm{Query}_1\)
\(\rm{Query}_2\)
\(\vdots\)
\(\rm{Query}_Q\)

其中 \(\rm{Query}_i\) 表示第 \(i\) 个操作。

类型 \(1\) 操作格式如下:

1 \(u\) \(v\)

类型 \(2\) 操作格式如下:

2 \(v\)

类型 \(3\) 操作格式如下:

3 \(v\)

输出格式

对于每个类型 \(3\) 的操作,输出如下结果:

  • 如果从顶点 \(v\) 出发经过若干条边(可以为零条)能够到达某个黑色顶点,输出 Yes
  • 否则输出 No

输入输出样例 #1

输入 #1

5 12
3 2
2 2
3 2
1 2 5
1 3 4
3 4
3 5
1 4 5
1 1 3
3 1
2 2
3 1

输出 #1

No
Yes
No
Yes
Yes
No

说明/提示

样例解释 1

在本输入中,图初始有五个顶点且没有边。
本输入包含 \(12\) 个操作。

  • 第 1 个操作为 3 2
    • 此时无法从顶点 \(2\) 出发到达任何黑色顶点,因此输出 No
  • 第 2 个操作为 2 2
    • 顶点 \(2\) 是白色,将其变为黑色。
  • 第 3 个操作为 3 2
    • 此时可以从顶点 \(2\) 出发到达黑色顶点 \(2\),因此输出 Yes
  • 第 4 个操作为 1 2 5
    • 在顶点 \(2\)\(5\) 之间添加一条边。
  • 第 5 个操作为 1 3 4
    • 在顶点 \(3\)\(4\) 之间添加一条边。
  • 第 6 个操作为 3 4
    • 此时无法从顶点 \(4\) 出发到达任何黑色顶点,因此输出 No
  • 第 7 个操作为 3 5
    • 此时可以从顶点 \(5\) 出发到达黑色顶点 \(2\),因此输出 Yes
  • 第 8 个操作为 1 4 5
    • 在顶点 \(4\)\(5\) 之间添加一条边。
  • 第 9 个操作为 1 1 3
    • 在顶点 \(1\)\(3\) 之间添加一条边。
  • 第 10 个操作为 3 1
    • 此时可以从顶点 \(1\) 出发到达黑色顶点 \(2\),因此输出 Yes
  • 第 11 个操作为 2 2
    • 顶点 \(2\) 是黑色,将其变为白色。
  • 第 12 个操作为 3 1
    • 此时无法从顶点 \(1\) 出发到达任何黑色顶点,因此输出 No

数据范围

  • 所有输入均为整数。
  • \(1 \le N \le 2 \times 10^5\)
  • \(1 \le Q \le 6 \times 10^5\)
  • 类型 \(1\) 操作满足以下条件:
    • \(1 \le u < v \le N\)
    • 对于每个操作,\(u\)\(v\) 之间的边此前未被添加过。
  • 类型 \(2,3\) 操作满足以下条件:
    • \(1 \le v \le N\)

题解

动态加边,维护点的可达性问题,可以用集合来维护。

#include <iostream>
using namespace std;
const int MaxN=2e5+2;
int n,Q,Fa[MaxN],cnt[MaxN],col[MaxN];
int GetFa(int k) {if (k==Fa[k]) return k;return Fa[k]=GetFa(Fa[k]);
}
void Merge(int x,int y) {int fx=GetFa(x);int fy=GetFa(y);if (fx!=fy) {Fa[fy]=fx; cnt[fx]+=cnt[fy];cnt[fy]=0;}
}
int main(){cin>>n>>Q;for (int i=1;i<=n;i++) Fa[i]=i;while (Q--) {int k,u,v;scanf("%d",&k);if (k==1) {scanf("%d%d",&u,&v);Merge(u,v);}if (k==2) {scanf("%d",&v);col[v]=1-col[v];int fx=GetFa(v); if (col[v]==0) cnt[fx]--;else cnt[fx]++;}if (k==3) {scanf("%d",&v);int fx=GetFa(v);if (cnt[fx]>0)cout<<"Yes\n";else cout<<"No\n";}}return 0;
}
http://www.jsqmd.com/news/566237/

相关文章:

  • PostgreSQL 技术日报 (3月31日)|五大内核模块补丁评审与问题修复汇总
  • 告别osgQt!用osgQOpenGLWidget在Qt6中轻松加载OsgEarth三维地球(附完整代码)
  • 优质加拿大留学移民服务精选推荐:合规靠谱,少走弯路 - 资讯焦点
  • Phi-4-mini-reasoning效果展示:长文本摘要任务中核心结论提取精度
  • 赋予机器以“理解”之魂:AI智能体视觉检测认知层面的语义对齐与推理
  • 从零开始构建你的HTML个人主页:完整代码与实战指南
  • 边缘计算赋能农业,2026难优质边缘计算盒子厂家推荐 - 品牌2026
  • Zotero中文文献管理终极指南:茉莉花插件一键解决三大痛点
  • 最后 1 天!HOW 2026 早鸟票收官,赴济南解锁开源数据库未来
  • 2026年食品清洗设备厂家推荐:山东皓铭食品机械辣椒/葡萄/小龙虾气泡清洗机等全系供应 - 品牌推荐官
  • 2026年 湖景民宿品牌推荐:绝美湖畔度假体验与贴心服务口碑之选 - 品牌企业推荐师(官方)
  • Omdia:Windows 11换机需求与成本压力叠加,2025年第四季度美国PC市场同比增长3%
  • 文墨共鸣大模型入门指南:Ubuntu 20.04系统下的保姆级部署教程
  • 2026年张家港吊车租赁公司推荐:苏州云鼎起重吊装,100-900吨汽车吊/吊车出租一站式服务 - 品牌推荐官
  • Phi-3-mini-4k-instruct-gguf模型微调入门:使用自有数据提升专业领域表现
  • 2026年多级泵生产厂家实力推荐:河北邦源泵业,多级离心泵/污水泵/自吸泵等全系供应 - 品牌推荐官
  • 2026年叛逆孩子教育机构推荐:陕西大正教育,专注叛逆学生改变与矫正服务 - 品牌推荐官
  • 如何让foobar2000焕发新生?foobox-cn开源美化方案全解析
  • MATLAB中基于两步法的时频脊线提取与瞬时频率估计新算法
  • 从原理到实践:种子储存柜推荐厂家品牌北京中农科信深度测评 - 品牌推荐大师
  • CHORD-X构建自动化运维报告系统:服务器日志分析与日报生成
  • 告别传统监控滞后:2026年精选边缘计算盒子品牌推荐 - 品牌2026
  • 2026年数控车床输送机厂家推荐:上海固宇设备自动化,多类型车床辅机一站式供应 - 品牌推荐官
  • 2026年防火门厂家推荐:重庆固鑫门业,钢质/木质/防火卷帘/防盗安全门一站式供应 - 品牌推荐官
  • 2025年最新MSST-WebUI人声伴奏分离实战指南:从零到专业级音频处理
  • MSPM0G3507硬件资源全解析:从ADC到UART的实战避坑指南
  • springboot+vue基于web的大学生问卷调查系统的设计系统
  • 2026最新山东济宁双头搅拌车推荐!工程建设/小型工程/乡村修路/隧道施工/轨道运输适用品牌榜单 - 十大品牌榜
  • 我用了半年串口屏,说几句掏心窝的话 - 浴缸里的巡洋舰
  • 2026年全国CPA培训/CPA机构优选 兼顾口碑与实效适配全阶段考生 - 深度智识库