
并查集
Giggle1929
这个作者很懒,什么都没留下…
展开
-
第十三天PAT-A1114 Family Property并查集详细注解
A1114Descripiton:家族产权,给出N个人的家族关系即其所拥有的房产数和总面积,求这一系列人属于几个家族,并求其家族人均房产数和人均面积。思路:由于输入当前人的时候,其孩子的房产数和面积还没输入,所以第一遍输入没法计算房产总数和面积总数,于是我在第一遍输入的时候直接不做集合求并了,而是将所有与当前人为一家人(包括父母节点)的下标存储在结构体vector<int>child中,当所有人的房产数和总面积都输入完毕后,再从头到尾遍历每个人、取出要合并为一家人的下标进行合并;id原创 2020-08-27 22:36:33 · 198 阅读 · 0 评论 -
第八天PAT-A1107 Social Clusters并查集背诵模板解析
A1107Description:具有相同爱好的人城市为社交圈,你的任务是找出所有的社交圈。Input:每个测试一组样例;首行给出一个正整数N<=1000,表述社交网络中的总人数,人们被编号为1-N接下来N行,每行给出对应人的爱好,爱好总数取值范围[1,1000]Output:首行输出社交圈的个数;第二行,以递减序列输出每个社交圈中的人数算法描述:拥有共同爱好的人为同一圈子,并查集并查集算法的模板如下:int fa[maxn];void init(){原创 2020-08-22 15:15:46 · 151 阅读 · 0 评论 -
第五天PAT-A1034 Head of a Gang并查集解法详细算法描述及代码解析
A1034Description:警方找犯罪团伙的头目的方式之一是检查人们的通话记录。如果AB之间有通话,则认为AB是相关的。关系的强度定义为两人通话的总时长。若一群人中存在两个人的的关系强度大于阈值K,则认为是一个团伙。对于每个团伙,总关系强度最大的人是头目。现在给出一组通话记录,找出这个团伙及其头目。算法描述:关于团伙人数,使用并查集,设置一个团伙人数记录数组(代码中为cnt);对于每条通话记录,为两者累加记录通话时间,为两者合并后得到的团伙增加总通话时长;通话时间最长的人是团伙中的头目;原创 2020-08-19 18:59:53 · 295 阅读 · 1 评论 -
第四天PAT-A1021 Deepest Root(难)详细代码注解
A1021Description:给出一个图,求可以得到最大深度树的根节点。详细推导证明过程见“《算法笔记上级实战训练》P344,证明过程如下“,实际遇到这样难以证明正确性的题,还是很难受的,不专注导致一道题写了两个多小时没写出来,反思一下,明天加油。#include<iostream>#include<stdio.h>#include<stdlib.h>#include<math.h>#include<string.h>#inc原创 2020-08-18 23:57:55 · 178 阅读 · 0 评论 -
计蒜客-网络交友-并查集
题目链接用了一个映射表维护人员序号AC代码#include<bits/stdc++.h>using namespace std;const int maxn = 10005;int p, n, fa[maxn], size[maxn];map<string, int>amap;int num(string nam){ if(amap.count(nam...原创 2019-07-15 11:23:50 · 245 阅读 · 0 评论 -
计蒜客-修建大桥-并查集做法-图的连通性
题目链接又是等前女友回消息的一天大概是要用最少的边构建一个无向连通图吧想了一下用并查集竟然过了,AC如下#include<bits/stdc++.h>using namespace std;int cnt, n, m;int fa[1005], size[1005];void init(){ cnt = n - 1; for(int i = 0; i <...原创 2019-07-10 17:23:59 · 126 阅读 · 0 评论 -
计蒜客-穿越雷区-Kruscal最小生成树
题目链接水题做多了有害身体健康?AC代码#include<bits/stdc++.h>using namespace std;const int maxn = 30005;const int maxm = 50005;int n, m, fa[maxn], ans, cnt;struct edge{ int u, v, w; edge(int uu, int v...原创 2019-07-12 22:55:07 · 137 阅读 · 0 评论 -
计蒜客-连线问题-Krucal-并查集
题目链接无坑,AC代码#include<bits/stdc++.h>using namespace std;const int maxn = 105;const int inf = 0x3f3f3f3f;struct point{ int x, y; point(){ } point(int xx, int yy){ x = xx; y = yy; }...原创 2019-07-12 22:23:45 · 129 阅读 · 0 评论 -
JSK-布设光钎-Kruscal最小生成树-并查集-图的连通性
题目链接(舍友走了四个,还剩我和老王)水题,AC如下#include<bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;const int maxn = 105;int n, ans, fa[maxn], cnt;struct edge{ int u, v, w; edge(int _u,...原创 2019-07-12 21:51:58 · 115 阅读 · 0 评论 -
JSK-并查集-找朋友
题目链接简单的并查集应用,路径压缩代码:int get(int x){ if(x == father[x]; return x; return father[x] = get(father[x]);}AC警告#include<bits/stdc++.h>using namespace std;int fa[5005];int get(int x){ ...原创 2019-05-14 11:15:27 · 383 阅读 · 0 评论