并查集
化身孤岛的鲸o
我祈祷拥有一颗透明的心灵
展开
-
洛谷 P1196 [NOI2002]银河英雄传说 带权并查集
洛谷 P1196 [NOI2002]银河英雄传说 带权并查集题解:本题所求的不止是两个编号之间是否有关系,还要求两个编号之间有什么关系,这就要求我们维护多个数组,fa[]数组维护两个编号之间的连通性,dis[]维护编号为i的战舰到fa[i]之间的距离,num[]维护编号为i的战舰所在的那一列有多少战舰。代码如下:#include<iostream>#include<al...原创 2020-01-20 22:37:48 · 161 阅读 · 0 评论 -
洛谷 P1197 [JSOI2008]星球大战 离线+并查集
洛谷 P1197 [JSOI2008]星球大战 离散化+并查集题解:这道题我们需要离线存储信息,然后逆着往上不断地修复每个星球。代码如下:#include<iostream>#include<algorithm>#include<stdio.h>#include<cmath>#include<queue>#include...原创 2020-01-20 20:39:09 · 211 阅读 · 0 评论 -
洛谷 P1525 关押罪犯 并查集
洛谷 P1525 关押罪犯 并查集题解:(1)我们需要先对所有边的权值(也就是矛盾值)按照权值从大到小的顺序进行排序,为什么要排序呢,因为我们需要尽量把两个仇恨值大的罪犯分到不同的集合,所以要先对他们进行处理。(2)然后这里有一个原则,就是敌人的敌人可能是朋友,怎样理解这句话呢?可以理解为自己的两个敌人可能是朋友,我们把自己的两个敌人分到一个集合中,自己在一个集合,他们之间可能不存在矛盾,此...原创 2020-01-20 16:58:28 · 200 阅读 · 1 评论 -
洛谷 P2024 食物链 带权并查集
https://www.luogu.org/problem/P2024思路:参考了大神的博客:https://blog.csdn.net/xiji333/article/details/86653185代码如下:#include<iostream>#include<math.h>#include<map>#define MAX 50005...原创 2019-10-24 00:18:03 · 156 阅读 · 0 评论 -
洛谷 P3367 并查集板子
代码如下:#include<iostream>using namespace std;int n,m;int fa[10005];int findfather(int x){ if(x!=fa[x]){ return fa[x]=findfather(fa[x]); }else{ return fa[x]; }}int main(){...原创 2019-09-10 15:09:59 · 212 阅读 · 0 评论 -
PAT甲级 1118 Birds in Forest 并查集
代码如下://并查集#include<iostream>#include<vector>#include<stdio.h>#include<math.h>#define MAX 10005using namespace std;int fa[MAX];int n,k,q;int flag[MAX]={0};int fin...原创 2019-10-21 14:41:37 · 158 阅读 · 0 评论 -
PAT甲级 1114 Family Property 并查集
题目大意:给出n个人的家庭信息id, f_id, m_id, c_num, child1,child2… ,num, area。分别代表这个人的id,父亲的id,母亲的id,子女的个数,子女id,总共拥有的房产数,房产的总面积。我们要求出总共有几个不同的家庭,并输出每个家庭中id最小成员的id,家庭成员数,平均房产数,平均房产面积。思路:模拟+并查集的思路。代码如下://并查集+...原创 2019-10-21 14:23:24 · 163 阅读 · 0 评论 -
PAT甲级 1107 Social Clusters 并查集
Solution:题目大意:有n个人,编号为1~n,它们有自己的一些爱好,要求我们将有某个或者某些相同爱好的人合并到一个集合中,并最终统计有多少个集合,并从大到小输出这个集合中的人数。我们用hobby[temp]=i,表示i号的人有编号为temp的爱好。如果一个结点是一个集合的父结点,num[fa]表示的是这个集合的人数。代码如下://并查集#include<iostream&...原创 2019-09-30 21:40:42 · 168 阅读 · 0 评论