Just for fun----zjfc 并查集操作
题目描述
When I boring , I'm crazy...So I design a BT game just for fun...It's easy...
输入描述
First line is a interger T <=20 ; T case follow ,each case begin with the interger N(N<=100000) , as the max number I will give . Then the interger M(M<=10000) ,as the M lines follow: One type of format as "A B" is the only instruction I did,it means let A and B in the same set. All the interger not less than 0.
输出描述
if they are already in the same set puts "nop",else printf the min number in this set.
样例输入
1 10 5 1 3 1 2 5 4 5 3 5 3
样例输出
1 1 4 1 nop
使用并查集,
做每次归并操作的时候,取2个集合中的最小根结点作为新集合的根节点,并输出该
结点的值。同时可以做路径压缩操作。
代码如下:
#include<stdio.h> int set[100002],n,m,a,b,t; void init() {int i;for(i=1;i<=n;i++){set[i]=i;} } int find2(int x) {int r=x,temp;while(set[x]!=x)x=set[x]; while(r!=x) temp=set[r],set[r]=x,r=temp;return x; } void merge2(int a,int b) { int ra=find2(a); int rb=find2(b); if(ra==rb) printf("nop\n");else if(ra<rb){set[rb]=ra; printf("%d\n",ra); }else{set[ra]=rb; printf("%d\n",rb);} } int main() {scanf("%d",&t);while(t--){ scanf("%d",&n);init(); scanf("%d",&m);while(m--){scanf("%d %d",&a,&b);merge2(a,b);} }return 0; }
转载于:https://www.cnblogs.com/pandy/archive/2009/05/02/1447647.html
Just for fun----zjfc 并查集操作相关推荐
- leetcode1319. 连通网络的操作次数(并查集)
用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1.线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b. 网络 ...
- [JSOI2008]星球大战 并查集
这一阵子因为好多原因,学习时间有点少,还好时间不算很长. 这两天写了道并查集的题目,感觉不错. 题目描述 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治着整个星系. 某一天,凭着一个偶 ...
- HDU - 6393 Traffic Network in Numazu(线段树+LCA+树链剖分+并查集)
题目链接:点击查看 题目大意:给出一个由n个点和n条边组成的图,每条边都有权值,题目保证图是连通的,然后给出m个询问,每次询问分为两种形式: 0 x y:将第x条边的权值修改为y 1 x y:查询x- ...
- 并查集与贪心算法的应用之求解无向图的最小生成树
一,介绍 本文介绍使用Kruskal算法求解无向图的最小生成树.Kruskal是一个贪心算法,并且使用了并查集这种数据结构. 关于并查集的介绍,参考:数据结构--并查集的原理及实现 二,构造一个无向图 ...
- P5787 二分图 /【模板】线段树分治(线段树分治、并查集)
关于什么是合理的实现 解析 本题把并查集写在了题面上 然而,我却一直沉浸在一个及其通用的判断二分图的方法中: 一个图是二分图的充要条件是它没有奇环 怎么维护这个玩意?带权并查集! 怎么套线段树分治?可 ...
- leetcode684. 冗余连接(并查集)
在本问题中, 树指的是一个连通且无环的无向图. 输入一个图,该图由一个有着N个节点 (节点值不重复1, 2, -, N) 的树及一条附加的边构成.附加的边的两个顶点包含在1到N中间,这条附加的边不属于 ...
- leetcode面试题 17.07. 婴儿名字(并查集)
每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量.有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来.给定两个列表,一个是名字 ...
- 【BZOJ1015】【tyvj3487】星球大战starwar,特别的并查集技巧
传送门1 传送门2 写在前面:无 思路:比较简单的并查集题目,正着做很难,我们可以倒着想,询问倒着排,相当于每次加入一个星球并把可以连的边都连上,查一下联通块数量就行了 注意:必须两个顶点都没有被摧毁 ...
- 数据结构 之 并查集(Disjoint Set)
一.并查集的概念: 首先,为了引出并查集,先介绍几个概念: 1.等价关系(Equivalent Relation) 自反性.对称性.传递性. 假设a和b存在等价关系.记 ...
最新文章
- LeetCode实战:环形链表 II
- SAP MCH1表和MCHA表更新逻辑
- char *a 与 char a[] 的区别
- 通过Shell开发企业级专业服务启动脚本案例(MySQL)
- JavaSE(十)之反射
- MODBUS通讯协议详解(基于485)
- 分享18道Java基础面试笔试题
- POJ-3154-Graveyard
- Docker-基本概念(镜像和容器)
- 如何运行从github拉取的vue项目
- a href=javascript:;/a
- 阿里服务器降温系统,双十一服务器靠“泡澡”降温?阿里看上了3M的这项“冷”科技...
- md快捷键(win)
- 项目操作案例丨西门子PLC通过网关连接ACS800变频器
- GAN的一些经典网络的基本思想
- c语言实现的学生信息查询系统
- docer kafka安装
- 已经提交到gitlab上的代码如何撤回
- 洛阳理工学院linux实验报告,谁来给我抄实验报告啊!这一张又一张写得。。。。...
- springboot+jsp项目校园外卖配送系统
热门文章
- SqlServer Management出现列名无效
- 鲁大师PC最新硬件排行,汇总Q1季度最强PC硬件产品!
- 【django】settings.py配置文件内容详细介绍
- 转载一份诚恳的互联网找工作总结和感想(附:怎样花两年时间去面试一个人)
- springboot房屋租赁管理系统的设计与实现
- 在任务管理器中不小心把资源管理器给关了导致电脑黑屏
- Spring中的各种Utils(四):ClassUtils详解
- 32位系统能够识别多达内存_C ++程序可打印多达N个术语的卢卡斯系列
- Docker 镜像仓库 -- Harbor 搭建
- 蓝桥杯-兰顿蚂蚁(python)