题意: 给定一棵树 当前树的答案为 $f[1]^f[2]^f[3]^..^f[n]$ f[i]表示去除掉i点 该树的联通块数量 有m次操作 每次将两个点连一条边 然后再输出该树的答案 题目 题解: 显然一开始的时候 答案为每个点的答案为其度 所以可以处理好一开始的答案 如果将两个点连在一起的时候 那
转载
2019-10-02 20:12:00
80阅读
2评论
The scientists working at the Family Genetics Institute are tracing the spread of a hereditary dis
原创
2021-03-20 21:43:40
40阅读
给你一棵树,然后你要给每个点给上一个字母。
有一些限制条件,要求某一段路径在填好之后是一个回文串。
问你总有有多少种方案满足限制条件。 ...
转载
2021-08-24 08:54:00
124阅读
2评论
一个树有N个节点,每个节点可以买卖同一件物品,不同的节点价格也不相同,给出每个节点的价钱,Q次询问
原创
2023-07-17 18:13:16
84阅读
【题目链接】 http://acm.hdu.edu.cn/showproblem.php?pid=2874 【题目大意】 有n个村庄,m条路,不存在环,有q个询问,问两个村庄是否可达, 如果可达则输出最短路。 【题解】 因为不存在环,所以是森林,我们计算每个连通块的dfs序,计算块内每个点到根距离
转载
2017-03-29 23:59:00
29阅读
2评论
算法熟记-并查集1. 简述 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问本的算法。2. 复杂度 T...
转载
2023-07-14 16:57:27
290阅读
并查集 概念: 并查集就是将数组中的数经过树状排列后, 如果寻找两个数是否属于同一集合, 直接找是否属于同一根节点的子树就可以。 路径压缩和按秩合并 路径压缩: 在每次执行 \(get\) 操作的同时, 把访问过的每个节点(也就是所查的元素的祖先,都直接指向树根) 每次 \(get\) 的均摊复杂度 ...
转载
2021-10-10 11:30:00
744阅读
2评论
一. 并查集的介绍1.并查集的简单介绍 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。并查集跟树有些类似,只不过她跟树是相反的。在树这个数据结构里面,每个节点会记录它的子节点。在并查集里,每个节点会记录它的父节点【1】。 &n
转载
2023-09-30 10:14:13
117阅读
就是求出原先图中的桥的数量,在每一次询问时加入一条新边,求加入当前边后图中剩余的桥的数量 求出原先图中的桥的数量,然后减去新加入边的两端点之间的桥的数量,就是剩余桥的数量。。 用并查集把属于同一集合的放到一起(即两个点之间没有桥的)
转载
2018-07-12 23:59:00
259阅读
2评论
题意:
给定n个点m条边的无向图
Q个询问:
问加上这条边后图中还有多少桥。
注意询问不是独立的(加了边在后面都有效)
思路:
先缩点得到缩点树,加上一条边后[u, LCA(u,v), v] 成环,则删掉这里的点,并把集合向上合并
#include
#include
#include
#include
#include
#include
#include
原创
2021-08-13 13:53:06
95阅读
一. 离线Tarjan算法 LCA问题(lowest common ancestors):在一个有根树T中。两个节点和的近期公共祖先。指的是二者的公共祖先中深度最高的节点。给定随意两个树中的节点,求它们的近期公共祖先。 对于二分查找树、二叉树,能够用普通的dfs实现。但对于多叉树、查询次数频繁的情况
转载
2017-07-23 21:50:00
196阅读
2评论
Connections between cities:
题解:
树上倍增LCA处理最近公共祖先,并查集处理不同集合的树,递推距离,但是有一个坑点,这题卡常,卡的要命,所以在处理一个集合的树的时候,需要剪枝,访问过的点,就不需要再访问了,但是一般建树的dfs,访问过的点,可能还会访问一两次。
AC代码:
#include<bits/stdc++.h>
using namespace ...
原创
2022-09-19 09:45:54
39阅读
题目描述输入格式第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=5000),分别表示有n个人,m个亲戚关系,询问p对亲戚关系。以下m行:每行两个数Mi,Mj,1<=Mi,Mj<=N,表示Ai和Bi具有亲戚关系。接下来p行:每行两个数Pi,Pj,询问Pi和Pj是否具有亲戚关系。输出格式P行,每行一个’Yes’或’No’。表示第i个询问的答案为“具有”
原创
2020-04-08 21:54:53
502阅读
在一张图中,我们常常会遇到判断两个点是否在同一个连通块上,此时,我们若采用朴素而低效的dfs的方法,就有超时的危险,于是我们引入了一种更加实用的算法——并查集。 父节点表示法 首先,我们来了解一个树的存储方法:父节点表示法。 因为每个节点只有唯一父节点,于是我们用 parent[i] 来表示节点 \ ...
转载
2021-04-17 11:34:00
195阅读
2评论
2018-03-03 16:00:40 集合运算: 交、并、补、差,判定一个元素是否属于某一集合。 并查集:集合并 、查某元素属于哪个集合。 并查集问题中集合存储如何实现? 1)可以用树结构表示集合,树的每个结点就是集合中的各个元素。 2)采用数组的形式进行存储 查找操作 集合并操作 这里的并操作是
转载
2018-03-03 16:10:00
208阅读
2评论
基础: 1102 难度1 1213 难度1 1232 难度1 1233 难度1 稍加思想: 1198 打表很恶心,难度 1.5 1269 (有向图是否联通) Tarjan 难度1.5 并查集 难度2 1272 (无向图是否是棵树) 难度2 1325 (有向图是否是棵树)转化思想 难度2 1598 排
转载
2017-09-27 21:06:00
171阅读
这两天又重新看了一下有关并查集的题目,相关的可以参考大牛的博客http://hi.baidu.com/czyuan_acm/blog/item/531c07afdc7d6fc57cd92ab1.html以下是自己的一点总结。
转载
2013-08-24 21:04:00
76阅读
2评论
K - How Many Tables Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at
转载
2019-02-14 21:33:00
126阅读
2评论
并查集主要用于实现集合的合并。一个并查集至少支持以下两种操作: 合并:将两个集合合并为一个集合 查询:查询两个元素是否在一个集合中 并查集利用树的性质实现这两种功能,每个集合都用该集合中所有元素的祖先来表示,所以用一个 fa 数组记录每个元素的祖先。初始情况下,所有元素均各自独立,即 \(fa[i] ...
转载
2021-09-24 14:26:00
158阅读
2评论