并查集
永远的EMT
每天时刻保持超越自我的意识
展开
-
并查集
并查集的定义:int fa[N];fa[i]=i表示i的父节点为i并查集的操作初始化:FOR(i,0,N)fa[i]=i;查找:int findFather(int x){ while(x!=fa[x]){ x=fa[x]; } return x;}合并:void Union(int a,int b){ int原创 2017-02-13 16:53:47 · 310 阅读 · 0 评论 -
【PAT】1107. Social Clusters
考查点:并查集思路:直接用并查集,输入时完成合并操作,之后遍历集合数提交情况:第一次因为边界没搞对,sort排序应该是isroot,isroot+N+1,因为这里是从1到n开始计数的,+1不要少;刚开始时忘记初始化,一直输出零,第二次初始化放在输入n前面。。#define LOCAL#include #include #include #include #include原创 2017-02-13 21:20:09 · 284 阅读 · 0 评论 -
【PAT】1013. Battle Over Cities
考查点:DFS遍历图,计算连通分量思路:本质上就是计算连通分量,DFS遇到删除节点时要退出提交情况:注意这里是1到n下标要对应好#define LOCAL#include #include #include #include #include #include #include #include #include #include #include #defin原创 2017-02-14 14:11:40 · 316 阅读 · 0 评论 -
【PAT】1021. Deepest Root
考查点:并查集求连通分量,DFS或BFS思路:本题数据很弱,第一次直接用DFS就可以过,主要犯了啃爹的错误,在写循环遍历容器时for(int i=0;i暴力过的代码:#include #include #include #include #include #include #include #include #include #include #include #原创 2017-02-15 00:24:42 · 254 阅读 · 0 评论 -
【PAT】1114. Family Property
考查点:并查集思路及提交情况:这道题直接用并查集即可,但是在合并的时候要保证指向id最大的节点,还有合并同时必须完成房产个数和房地的更新,这里还用到了map把id映射为下标便于遍历,但是由于多了个映射第一次提交时候忘记把比较根节点时候先映射成id号,第二次提交时候房地产没有更新,原因也是在获取root值时没有用mp把id映射成下标号,最后提交有一组错误。以为是边界数据,实际上是程序写错了,以后原创 2017-02-24 17:01:27 · 341 阅读 · 0 评论 -
【PAT】1118. Birds in Forest
考查点:并查集思路:第一次运行因为没有预处理中算出真正的元素个数用MAXN来循环结果输出了无关元素#define LOCAL#include #include #include #include #include #include #include #include #include #include #include #define FOR(i, x, y) fo原创 2017-02-24 21:33:46 · 410 阅读 · 0 评论 -
【PAT】1034. Head of a Gang
考查点:DFS或并查集思路:首先本题的节点是用字符串标识的必须用map转化为int,这里只能转化为1到n的连续数,所以要预处理的时候用计数的方法转化;计算最大权值点和图的节点数可以用并查集,注意并查集这里要在初始化的时候保证所有点都指向head即最大权值点,每次修正根节点记得把根节点指向自己,还需要用一个sum数组更新每个连通分量的总权值,一个数组记录每个点的权值,用DFS的话参数需要增加he原创 2017-02-15 20:34:28 · 356 阅读 · 0 评论 -
【LeetCode】684. Redundant Connection
In this problem, a tree is an undirected graph that is connected and has no cycles.The given input is a graph that started as a tree with N nodes (with distinct values 1, 2, ..., N), with one additi...原创 2018-07-28 18:05:48 · 163 阅读 · 0 评论 -
【LeetCode】399. Evaluate Division
Equations are given in the format A / B = k, where A and B are variables represented as strings, and k is a real number (floating point number). Given some queries, return the answers. If the answer d...原创 2018-07-29 23:14:59 · 238 阅读 · 0 评论