思路

  • 题意:n个点,m条边,组成若干个连通图,如果一个点x能到另一个点y,那么如果(x,y)中任意一个点,都能到y,就称这个图为和谐图,求需要连多少个边,使得所有连通图成为和谐图
  • 做法:用并查集存下所有点的父节点,并且连通图的父节点是该连通图中所有点中编号最大的点,然后从小到大遍历所有的点,对于每一个点,如果这个点的所在连通图的根节点不是该点,就都判断一下该点到该点连通图的最大点之间的点是不是在这个连通图内,如果不是,就连入这个连通图,并且更新一下连通图的最大点。

代码

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;int fa[N],n,m;int Find(int x){if(fa[x] == x) return x;fa[x] = Find(fa[x]);return fa[x];
}
int main(){scanf("%d%d",&n,&m);for(int i = 1;i <= n;i++) fa[i] = i;while(m--){int x,y,fx,fy;scanf("%d%d",&x,&y);fx = Find(x);fy = Find(y);if(fx > fy) swap(fx,fy);fa[fx] = fy;}int res = 0;for(int i = 1;i <= n;i++){int x = Find(i);while(i < x){int y  = Find(i);if(x != y){res++;if(x < y) swap(x,y);fa[y] = x;}i++;}}cout << res;return 0;
}

Harmonious Graph(并查集)相关推荐

  1. 牛客多校3 - Operating on a Graph(并查集+链表合并)

    题目链接:点击查看 题目大意:给出一个由 n 个点和 m 条边组成的无向图,每个点初始时都有颜色 i ,i ∈ [ 0 , n - 1 ] ,接下来有 q 次操作,每次操作会给出一种颜色 x ,分两种 ...

  2. Harmonious Graph CodeForces - 1253D(思维+并查集)

    You're given an undirected graph with n nodes and m edges. Nodes are numbered from 1 to n. The graph ...

  3. D. Harmonious Graph【并查集】

    You're given an undirected graph with n nodes and m edges. Nodes are numbered from 1 to n. The graph ...

  4. Harmonious Graph (并查集 —父亲为最大值)

    You're given an undirected graph with n nodes and m edges. Nodes are numbered from 1 to n. The graph ...

  5. 【CF#505B】Mr. Kitayuta's Colorful Graph (并查集或Floyd或BFS)

    题干: Mr. Kitayuta has just bought an undirected graph consisting of n vertices and m edges. The verti ...

  6. 图论 + 并查集 ----最小生成树重构图 + 可撤销并查集 + set启发式合并 时间线上的离线求解 D. Graph and Queries

    解题思路 题目大意: 就是给你一个无向图,每个点都有一个权值,和qqq次询问 每次询问有两种操作 1 x:就询问从x点出发,能访问到的最大权值是多少,并把最大权值那个点的权值设置为0 2 x:就是删除 ...

  7. Graph Destruction 并查集,图论(500)

    题意 : 给一n个点m条边的无向图,问逐渐删去1-n点及它们的边,分别输出当前剩下多少个连通区域 思路 : 求连通块,想到了并查集,但并查集是增边,这里是减边,只要倒序考虑问题即可,那么问题转换为 : ...

  8. 【XSY2469】graph 分治 并查集

    题目大意 给你一张\(n\)个点\(m\)条边的无向图,问删去每个点后,原图是不是二分图. \(n,m\leq 100000\) 题解 一个图是二分图\(\Longleftrightarrow\)该图 ...

  9. UOJ14 UER #1 DZY Loves Graph(最小生成树+并查集)

    显然可以用可持久化并查集实现.考虑更简单的做法.如果没有撤销操作,用带撤销并查集暴力模拟即可,复杂度显然可以均摊.加上撤销操作,删除操作的复杂度不再能均摊,但注意到我们在删除时就可以知道他会不会被撤销 ...

最新文章

  1. JQuery实现表格行当复制
  2. sas数据集怎么导出_利用SAS中的ODS导出程序结果数据集
  3. leetcode 640. Solve the Equation | 640. 求解方程(字符串处理)
  4. python 遍历数组根据规律拆分,python 实现以相同规律打乱多组数据
  5. 第二十七章:五姓七望
  6. java 判断正负数_Java判断一个字符串为数字(正负、小数)
  7. 让VS2008真正支持JQuery的智能感知
  8. [LeetCode#81]Search in Rotated Sorted Array II
  9. axure 教务系统_AxureRP免费(教育)授权密钥申请攻略
  10. JavaScript是什么意思?
  11. Ubuntu恢复官方默认源
  12. java里面有radix树吗_基数树(radix tree)
  13. python transforms_pytorch中的transforms模块实例详解
  14. (2)QlikView安装
  15. WebWork深度探索之Pitfall
  16. day29 | 216.组合总和III 17.电话号码的字母组合
  17. 电调板维修之更换atmega8a主控芯片
  18. 如何安装 zlib-dev
  19. 详解DBSCAN聚类
  20. flux 中的 buffer 的原理

热门文章

  1. Testin云测试以AI自动化技术打造业内领先的兼容测试服务平台
  2. 基础算法优化——Fast Modular Multiplication
  3. 送什么礼物给小学生比较有纪念意义?适合送小学生的小礼物
  4. java 字体宽度_Java字体大小从宽度
  5. 打码兼职练习程序下载及说明
  6. java9.0.4配置_Tomcat 9.0 安装配置
  7. 一文读懂什么是智能制造,企业又该如何实施智能制造?
  8. CSS常用颜色配色的参数设置
  9. 基于PT8.2网关的二氧化碳监测及联动控制
  10. 前端初级学习阶段(3)