
并查集
小兔崽崽!
我还年轻!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
传送门
思路:这道题可以用并查集来做,首先按时间先排序。然后循环遍历,看A和B两个城市是否联通,如果不连通就Union(A,B)。#include <bits/stdc++.h>using namespace std;int pre[100010];int n,m;void init(){ for(int i=0;i<m;i++){ pre[i] = i; }}struct node{ int a,b; int time;};bo.原创 2021-04-12 21:43:07 · 234 阅读 · 0 评论 -
并查集详解
1.合并:合并两个集合。2查找:判断两个元素是否在一个集合。int father[N];其中father[ i ]表示元素 i 的父亲结点。如果father[ i ] = i ;表示元素 i 是该集合的根结点。对数组进行初始化for(int i=1 ; i<=N ;i++){ father[i] = i;}查找:查找的操作就是对给定的结点寻找其根节点的过程。实现的方式...原创 2020-01-31 22:41:52 · 164 阅读 · 0 评论 -
Mirror Temple(并查集)
思路:用并查集去写,只要去判断 findFarher(a)==findFarher(b)若相等第a个泡泡就可以穿梭到第b个泡泡中。用了两个数组放泡泡的x和y坐标,因为只要两个泡泡可以合并的条件是x坐标相等或者y坐标相等。所以我们就要用一个循环去合并满足条件的泡泡。 for(int i=1;i<=n;i++){ scanf("%d %d",&a,&b); if(x[a]!=0) Union(x[a],i); else ...原创 2020-07-19 09:52:22 · 179 阅读 · 0 评论 -
1700: 合根植物(并查集)
题目描述w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。接下...原创 2020-01-31 17:15:59 · 125 阅读 · 0 评论 -
通信系统(并查集)
题目描述某市计划建设一个通信系统。按照规划,这个系统包含若干端点,这些端点由通信线缆链接。消息可以在任何一个端点产生,并且只能通过线缆传送。每个端点接收消息后会将消息传送到与其相连的端点,除了那个消息发送过来的端点。如果某个端点是产生消息的端点,那么消息将被传送到与其相连的每一个端点。为了提高传送效率和节约资源,要求当消息在某个端点生成后,其余各个端点均能接收到消息,并且每个端点均不会重复收到...原创 2020-02-03 22:31:59 · 502 阅读 · 5 评论