题意

传送门 LeeCode 1579. 保证图可完全遍历

题解

若仅考虑一个人可以遍历图,那么用并查集维护连通性即可。若 A l i c e Alice Alice 和 B o b Bob Bob 都可以遍历图,那么对于每一个人,可以建立一棵边数为 n − 1 n-1 n−1 的生成树。显然类型 3 3 3 的边在生成树中越多,可以删除的边数越多。并查集维护类型 3 3 3 边的连通性,对于每一个连通分量,假设其节点数为 v v v,那么只用保留 v − 1 v-1 v−1 条类型三的边。于是答案为 e d g e s . s i z e ( ) − [ 2 ∗ ( n − 1 ) − ∑ 每 一 个 类 型 三 构 成 的 连 通 分 量 ( v i − 1 ) edges.size()-[2*(n-1)-\sum_{每一个类型三构成的连通分量}(v_i-1) edges.size()−[2∗(n−1)−∑每一个类型三构成的连通分量​(vi​−1)。

class Solution
{#define maxn 100005
public:int par[maxn], es[maxn];void init(int n){for (int i = 1; i <= n; i++){par[i] = i, es[i] = 0;}}int find(int x){return par[x] == x ? x : (par[x] = find(par[x]));}void unite(int x, int y){x = find(x), y = find(y);if (x == y) return;if (es[x] > es[y]) par[y] = x, es[x] += es[y] + 1;else{par[x] = y, es[y] += es[x] + 1;}}int calc(int id, int n, vector<vector<int>> &edges){init(n);for (auto e : edges){if (e[0] == id || (id != 3 && e[0] == 3)){unite(e[1], e[2]);}}int sum = 0;for (int i = 1; i <= n; i++){if (par[i] == i){sum += es[i];}}return sum;}int maxNumEdgesToRemove(int n, vector<vector<int>> &edges){bool f = calc(1, n, edges) == n - 1 && calc(2, n, edges) == n - 1;return f ? edges.size() - 2 * (n - 1) + calc(3, n, edges) : -1;}
};

LeeCode 1579 并查集相关推荐

  1. 力扣题解-1579. 保证图可完全遍历(并查集)

    题目:1579. 保证图可完全遍历 Alice 和 Bob 共有一个无向图,其中包含 n 个节点和 3 种类型的边: 类型 1:只能由 Alice 遍历. 类型 2:只能由 Bob 遍历. 类型 3: ...

  2. 并查集(Union-Find)

    并查集(Union-Find) 并查集(Union-Find) 1.初始化 2.查询 3.合并 4.平衡性优化,扁平化 5.按秩合并 6.路径压缩 7.代码 常用模板 [★ 547. 省份数量](ht ...

  3. 【LeetCode】﹝并查集ி﹞连通分量个数(套用模板一直爽)

    [LeetCode]﹝并查集ி﹞连通分量个数(套用模板一直爽) 文章目录 [LeetCode]﹝并查集ி﹞连通分量个数(套用模板一直爽) 模板(使用路径压缩的加权quick-union算法) 连通网络 ...

  4. 并查集之LeetCode1579. 保证图可完全遍历

    并查集之LeetCode1579. 保证图可完全遍历 前言 一,1579. 保证图可完全遍历 二,解题思路 三, 代码 总结 前言 算法之并查集 一,1579. 保证图可完全遍历 Alice 和 Bo ...

  5. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  6. HDU1811 Rank of Tetris 拓扑排序+并查集 OR 差分约束最短路+并查集

    题目链接 题意:就是给你一堆关系,看能不能排出个确定的顺序 做法: 1. 拓扑排序+并查集 应该很容易想到的一种思路,大于小于建立单向边.对于相等的呢,就把他们缩成一个点.就用并查集缩成一个点就行了 ...

  7. HDU 2586 How far away ? LCA ---tanjar+并查集 离线算法

    tanjar算法离线求LCA的思想主要是利用并查集的思想. 求距离的话就是d[start[i]]+end[en[i]]-2*d[lca[i]]; 首先从根节点dfs,在深度遍历的回溯的过程中不断的更新 ...

  8. POJ - 2513 Colored Sticks 欧拉通路+并查集+静态树

    一开始想用map来搞,但是感觉好复杂,然后想了一下看大佬们用trie做的,感觉十分合理就敲了一发. 一开始re,数组要开到550000 只会静态的字典树,在每个根节点看是否出现过改颜色,如果没有就把该 ...

  9. 关于 并查集(union find) 算法基本原理 以及 其 在分布式图场景的应用

    二月的最后一篇水文-想写一些有意思的东西. 文章目录 环检测在图数据结构中的应用 深度/广度优先 检测环 并查集数据结构 (Union-Find) 基本概念 初始化 合并 union 查找祖先 优化1 ...

最新文章

  1. 火狐浏览器信息提取工具Dumpzilla
  2. hazelcast入门教程_Hazelcast入门指南第3部分
  3. 2评分标准多少分_高新企业认定评分标准,需要多少分才能拿到高新认证证书...
  4. erlang监控树 supervisor
  5. Github图片无法打开的问题解决【2020.07.20更新】
  6. C#解析JSON字符串总结(转载)
  7. QQ头像无法加载,显示初始默认头像的解决方法
  8. 托福、雅思、托业有什么区别?
  9. BP,RNN 和 LSTM暨《Supervised Sequence Labelling with Recurrent Neural Networks-2012》阅读笔记
  10. 数据分析中的口径是什么?
  11. 服务器和交换机物理连接_「网络安全」网络设备篇(6)——四层交换机
  12. ReactNative Animated动画详解
  13. 程矢Oracle PowerDesigner中生成Oracle版本主键和自增列
  14. 企业邮箱登录入口有哪些?公司邮箱账号怎么登陆更方便
  15. 列表ul li前面的点如何更改颜色、形状、大小
  16. 【LabVIEW懒人系列教程-小白入门】1.16LabVIEW程序结构之小试身手
  17. iOS网络监测如何区分2、3、4G(Reachability)
  18. POJ 2395 Out of Hay 最小生成树(prime算法)
  19. 单片机设计资料,仿真、程序、原理图收集好资料分享,stm32、8086、单片机方案
  20. vue-trtc多人视频开发(从零开始)-有手就行篇-最详细讲解

热门文章

  1. Excel 如何找出最小值所对应的列名?
  2. 群晖DS918创建m.2 固态硬盘SSD读写缓存
  3. 电力系统暂态稳定仿真/simulink仿真 simulink搭建单机无穷大系统进行暂态稳定性仿真
  4. 动态规划 求第 n 个 Humble Number(丑数)
  5. 友善之臂NanoPC-T4嵌入式开发板 开箱
  6. system颜色函数
  7. 2014年秋浙大远程教育计算机离线作业.计算机基础知识题2,2014春浙大远程计算机应用基础第4次作业4.Excel知识题.doc...
  8. JavaSEDemo25Map
  9. python3计算长方形的周长和面积
  10. Unity使用暴风魔镜VR游戏开发