题目链接


题目大意:就是有n个点m条边,每次第i个点属于第i个联通块,现在有q次询问给你一个数o,如果o这个联通块没有相连的联通块就没什么事情发生,如果有的话,就将这几个点的联通块都并入o所在的联通块


解题思路:模拟一遍就好了没啥:就是在合并集合的时候要按秩合并,否则会超内存?,玄学。。


#include <iostream>
#include <cstdio>
#include <stack>
#include <sstream>
#include <vector>
#include <map>
#include <cstring>
#include <deque>
#include <cmath>
#include <iomanip>
#include <queue>
#include <algorithm>
#include <set>
#define mid ((l + r) >> 1)
#define Lson rt << 1, l , mid
#define Rson rt << 1|1, mid + 1, r
#define ms(a,al) memset(a,al,sizeof(a))
#define log2(a) log(a)/log(2)
#define _for(i,a,b) for( int i = (a); i < (b); ++i)
#define _rep(i,a,b) for( int i = (a); i <= (b); ++i)
#define for_(i,a,b) for( int i = (a); i >= (b); -- i)
#define rep_(i,a,b) for( int i = (a); i > (b); -- i)
#define lowbit(x) ((-x) & x)
#define IOS std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define INF 0x3f3f3f3f
#define hash Hash
#define next Next
#define count Count
#define pb push_back
#define f first
#define s second
using namespace std;
const int N = 8e5+10, mod = 1e9 + 7;
const long double eps = 1e-5;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> PII;
typedef pair<ll,ll> PLL;
typedef pair<double,double> PDD;
template<typename T> void read(T &x)
{x = 0;char ch = getchar();ll f = 1;while(!isdigit(ch)){if(ch == '-')f*=-1;ch=getchar();}while(isdigit(ch)){x = x*10+ch-48;ch=getchar();}x*=f;
}
template<typename T, typename... Args> void read(T &first, Args& ... args)
{read(first);read(args...);
}
int n, m;
int fa[N];
vector<int> G[N];inline int find(int x)
{return fa[x] == x ? x : fa[x] = find(fa[x]);
}int main()
{int T;read(T);while(T --){read(n,m);for(int i = 0; i < n; ++ i) fa[i] = i, G[i].clear();while(m --) {int l, r;read(l,r);G[l].pb(r);G[r].pb(l);}int q;read(q);while(q --){int x;read(x);if(x != find(x)) continue;vector <int> now = G[x];G[x].clear();for(auto it : now){int nx = find(it);if(nx != x){fa[nx] = x;if(G[nx].size() > G[x].size()) swap(G[nx], G[x]);for(auto i : G[nx]) G[x].pb(i);}}}for(int i = 0; i < n; ++ i){if(i == n - 1) printf("%d\n",find(i));else printf("%d ",find(i));}}return 0;
}

2020牛客多校G[并查集的两种思想,按秩合并+路径压缩]相关推荐

  1. 2020 牛客多校第一场

    2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...

  2. 2020牛客多校 J Easy Integration 计算过程详解【点火公式(Wallis积分)+组合数学】

    2020牛客暑期多校训练营(第一场) J Easy Integration 题 网上题解大多是 不断分部积分求解,其实有更为简洁的解法. 便是 Wallis积分(点火公式) + 组合数学 求解,本文给 ...

  3. [2020牛客多校第一场]Coda的题解集

    被暴打了. 会先写比赛中过题数100+的题目,其他的以后再补. 施工中,未完待续- F Infinite String Comparision 一开始想到的是对比到lcm(|a|,|b|),意料之中T ...

  4. 2020牛客多校9:B. Groundhog and Apple Tree(树形DP + 分类讨论 + 贪心)

    题目大意:有一棵苹果树,每个节点有一个苹果,吃掉 uuu 点的苹果能获得 aua_uau​点 HP,经过第 iii 条边需要消耗 wiw_iwi​ HP,在原地等待一秒可以获得 111 HP,每条边只 ...

  5. 牛客题目 - 白色相簿(并查集)

    牛牛的Fib序列 Problem Description 链接:https://ac.nowcoder.com/acm/problem/20793 来源:牛客网 众所周知,一个人或两个人之间的关系是最 ...

  6. 食物链 (利用并查集的两种解决方法)

    食物链是并查集中的一道经典题, 第一次看<挑战程序设计竞赛>上懵懵懂懂, 最近又看见了发现还是一脸懵逼. 首先题目如下 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形 ...

  7. 2020牛客多校第1场H-Minimum-cost Flow

    解题思路: 首先我们要从费用流mcmf的算法入手:因为它每次增广是再费用增广路上跑的,根据贪心的思想费用小的路基本上能运多少就尽量运多少,所以我们可以假设初始的边容量是1,只跑一遍mcmf.记录一下每 ...

  8. exgcd ---- 2020牛客多校第三场:[Fraction Construction Problem:exgcd+思维题]

    题目链接 题目大意:就是给你两个数a,ba,ba,b叫你求满足下面三个条件的c,d,e,fc,d,e,fc,d,e,f 1.cd−ef=ab1.{c\over d}-{e\over f}={a\ove ...

  9. 2020牛客多校第1场I-1 or 2一般图最大匹配带花树

    链接:https://ac.nowcoder.com/acm/contest/5666/I Bobo has a graph with n vertices and m edges where the ...

最新文章

  1. ORACLE SQL: 经典查询练手第二篇
  2. java sqlite使用小记
  3. spring的aop名词解释
  4. OpenCV人脸检测并把图片写成avi视频
  5. 【广搜】Keyboarding
  6. matlab for循环不覆盖,将输出保存到文本文件而不覆盖和打印矩阵中的N个条目[matlab]...
  7. java线程画动图闪,Android中利用画图类和线程画出闪烁的心形,android心形,package com....
  8. honeywell新风系统控制面板说明_觉得家里新风不给力了?一定是你不知道这些!
  9. 微信号也有加人涨粉规则和限制?
  10. 将数据集转换为Excel格式的一个实现
  11. synchronized关键字的4种用法
  12. 计算机怎么更改网络密码,该如何修改自家宽带帐号的密码?
  13. ExtJS2.0 可编辑表格EditorGridPanel
  14. 如何使Tello无人机能够通过Python进行条形码扫描?
  15. c语言代码怎么转成java,急C语言代码转成java代码,该如何解决
  16. 【数字图像处理matlab】sobel、prewitt算子图像锐化
  17. linux网络不通检查方法
  18. 刚刚,蚂蚁区块链喜提“世界互联网领先科技成果”大奖!
  19. C#List子类转List父类或者Obj对象转List
  20. 天融信虚拟企业防火墙学习

热门文章

  1. 解决scrapy安装失败
  2. 强烈推荐可以玩上一整天的游戏网站
  3. 使用OpenCV进行直播(附代码)
  4. GPU服务器选购指南-思腾合力篇
  5. ​你知道计算机视觉与机器视觉区别何在?
  6. 三天打入CV大赛决赛圈!我是如何做到的?
  7. vue-cli3.0 生产包去除console.log
  8. String、StringBuffer、StringBuilder源码解析
  9. scau 1142 巡逻的士兵(分治)
  10. win32 打印机api