LOJ #109. 并查集
测试数据
题目描述
这是一道模板题。
维护一个 nnn 点的无向图,支持:
- 加入一条连接 uuu 和 vvv 的无向边
- 查询 uuu 和 vvv 的连通性
由于本题数据较大,因此输出的时候采用特殊的输出方式:用 000 或 111 代表每个询问的答案,将每个询问的答案一次从左到右排列,把得到的串视为一个二进制数,输出这个二进制数 mod 998244353\text{mod} ~ 998244353mod 998244353 的值。
输入格式
第一行包含两个整数 n,mn,mn,m,表示点的个数和操作的数目。
接下来 mmm 行每行包括三个整数 op,u,v\text{op},u,vop,u,v。
- 如果 op=0\text{op} = 0op=0,则表示加入一条连接 uuu 和 vvv 的无向边;
- 如果 op=1\text{op} = 1op=1,则表示查询 uuu 和 vvv 的连通性。
输出格式
一行包括一个整数表示答案。
样例
样例输入
3 6
1 1 0
0 0 1
1 0 1
1 1 2
0 2 1
1 2 1
样例输出
5
样例解释
答案串为 101101101。
数据范围与提示
n≤4000000,m≤8000000n\le 4000000,m\le 8000000n≤4000000,m≤8000000
显示分类标签
感觉这几天见鬼了。。
昨天写的旋转卡壳比暴力慢,
今天写的启发式合并比暴力合并慢,,
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 using namespace std; 6 const int MAXN=8000001; 7 const int mod=998244353; 8 inline void read(int &n) 9 { 10 char c='+';bool flag=0;n=0; 11 while(c<'0'||c>'9') c=='-'?flag=1,c=getchar():c=getchar(); 12 while(c>='0'&&c<='9') n=n*10+c-48,c=getchar(); 13 } 14 int fa[MAXN]; 15 int size[MAXN]; 16 int n,m; 17 string p; 18 int find(int x) 19 {return fa[x]==x?fa[x]:fa[x]=find(fa[x]);} 20 int query(int x,int y) 21 {return find(x)==find(y);} 22 void unionn(int x,int y) 23 { 24 int fx=find(x);int fy=find(y); 25 if(fx!=fy) 26 { 27 if(size[fx]>size[fy]) swap(fx,fy); 28 fa[fx]=fy; size[fy]+=size[fx]; 29 //fa[fx]=fy; 30 } 31 } 32 int ans=0; 33 int main() 34 { 35 //freopen("a.in","r",stdin); 36 //freopen("a.out","w",stdout); 37 read(n);read(m); 38 for(int i=1;i<=n;i++) fa[i]=i; 39 for(int i=1;i<=m;i++) 40 { 41 int how;read(how); 42 if(how)// 询问 43 { 44 int x,y;read(x);read(y); 45 ans=(ans*2+query(x,y))%mod; 46 } 47 else//连边 48 { 49 int x,y;read(x);read(y); 50 unionn(x,y); 51 } 52 } 53 printf("%d",ans); 54 return 0; 55 }
转载于:https://www.cnblogs.com/zwfymqz/p/7355844.html
LOJ #109. 并查集相关推荐
- BZOJ 2143 飞飞侠(线段树优化建边 / 并查集优化最短路)【BZOJ修复工程】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2143 是 hydro 的 BZOJ ...
- codeforces 400D Dima and Bacteria 并查集+floyd
题目链接:http://codeforces.com/problemset/problem/400/D 题目大意: 给定n个集合,m步操作,k个种类的细菌, 第二行给出k个数表示连续的xi个数属于i集 ...
- hdu 1811 Rank of Tetris (并查集+拓扑排序)
Problem - 1811 感觉这题的并查集以及拓扑排序并不难,但是做题的时候必须理解到矛盾(CONFLICT)与不确定(UNCERTAIN)直接的优先关系. 做这题的时候,构图什么的很简单,就是没 ...
- BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)
Description Input Output Sample Input1 1 4 3 1 2 50 1 2 3 100 2 3 4 50 1 5 0 2 3 0 2 1 4 1 3 1 3 2 S ...
- POJ 3694 (tarjan缩点+LCA+并查集)
好久没写过这么长的代码了,题解东哥讲了那么多,并查集优化还是很厉害的,赶快做做前几天碰到的相似的题. 1 #include <iostream> 2 #include <algori ...
- UVALive 4035 - Undetectable Tour(并查集)
题意:给定一个 N * N(3 <= N <= 10000)的矩形区域,左下角为(0,0),右上角为(N,N),现在要从左下角走到右上角,但是有 k(k <= 100)个监视器,每个 ...
- 迷宫收集星星 并查集解答
群里发的来历不明的题目 可使用深搜广搜解决 我试了试并查集 效率不是很高 题目描述 解答 并查集 1 #include <iostream> 2 #include <vector&g ...
- Valentine's Day Round hdu 5176 The Experience of Love [好题 带权并查集 unsigned long long]
传送门 The Experience of Love Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Ja ...
- 蓝桥备赛第四周 同余+并查集
文章目录 0x33 同余 同余类+剩余系+费马小定理+欧拉定理及推论 最幸运的数字 题解 这次的代码很多东西:欧拉函数快速求解,gcd,快速乘,各种定理,建议当模板背 10LL 转换成长整型 快速乘+ ...
最新文章
- rhel7安装vnc出现error: Failed dependencies:
- 在Blazor中构建数据库应用程序——第1部分——项目结构和框架
- 苹果Mac临时文件存储助手工具:Yoink
- U盘文件夹类型变成应用程序
- 2019.07.一年级暑假——自动随机生成100以内加减法算术题的python实现
- K8S(二)安装配置篇
- SPU、SKU、SKC、ARPU是什么
- 使用递归顺序和逆序输出单链表
- 运筹说 第61期 | 整数规划经典例题讲解
- 一招解决win11系统字体模糊发虚不清楚的问题
- 山石防火墙怎么映射服务器,hillstone防火墙如何设置
- CF--1000D - Yet Another Problem On a Subsequence
- 发票识别 发票扫描识别 一键导出表格 增值税发票扫描识别
- umeditor php上传图片,html5 - UMeditor thinkphp上传图片出错
- 计算机配置查看软件,无需软件 三方法查看电脑配置
- 远程计算机需要网络级别身份验证,而您的不支持该验证
- 3-感知机的局限性与多层感知机
- 5.Struts2_Action 概述
- 光电滑环结构原理是什么
- pandas read_json时ValueError: Expected object or value的解决方案
热门文章
- 艾宾浩斯记忆曲线(遗忘曲线)
- 【Git从入门到精通】02-深入Git
- 判断浏览器类型 (区分IE浏览器)
- 计算机编程跟英语关系大吗,编程与英语的关系
- Shiro权限管理框架详解
- 养生指南 3 : 人的健康离不开两大要素 : 足够的气血 / 畅通的经络
- ESP32CAM--st7789--240x240--1.3inch
- 刷新率属于计算机的显示性能指标吗,显示器性能指标(菜鸟必看)
- 混合改进策略的黑猩猩优化算法
- 微信小程序========》showmodal弹窗content内容换行显示