CCCC L2-024 部落【并查集】
https://www.patest.cn/contests/gplt/L2-024
首先在一行中输出这个社区的总人数、以及互不相交的部落的个数。随后对每一次查询,如果他们属于同一个部落,则在一行中输出“Y”,否则输出“N”。
/*
求连通分量,先记录下原始的连通分量,每删除一个点,删去相应的边(这里用邻接矩阵便于删除边),然后再重新统计连通分量。如果和原来相同(占领的点本身是孤立的点)或者比原来多1,都不是关键城市,如果删除一个点后所计算的连通分量比原来多两个或者两个以上则发出警报,最后如果删掉的点数和总的点数相同,打印Game Over。
*/
#include <bits/stdc++.h>
using namespace std; const int maxn=; int fa[maxn];
int cnt[maxn]; void init(){
for (int i=;i<=;i++){
fa[i]=i;
}
}
int find(int x){
if (x==fa[x]) return x;
return fa[x]=find(fa[x]);
}
void unite(int x,int y){
x=find(x);
y=find(y);
if (x==y) return;
fa[y]=x;
}
bool same(int x,int y){
return find(x)==find(y);
}
int main(){
set<int> s;
init();
int n;
cin >> n;
for (int i=;i<n;i++){
int k;
cin >> k;
int a;
cin >> a;
s.insert(a);
for (int j=;j<k;j++){
int b;
cin >> b;
s.insert(b);
unite(a,b);
}
}
int sum1=,sum2=;
for (int i=;i<=s.size();i++){
if (fa[i]==i) sum2++;
} cout << s.size() << " " << sum2 <<endl; cin >> n;
for (int i=;i<n;i++){
int x,y;
cin >> x >>y;
if (same(x,y)){
cout << "Y" << endl;
}
else{
cout << "N" << endl;
}
}
}
CCCC L2-024 部落【并查集】的更多相关文章
- 【BZOJ1821】[JSOI2010]部落划分(二分,并查集)
[BZOJ1821][JSOI2010]部落划分(二分,并查集) 题面 BZOJ 洛谷 题解 二分答案,把距离小于二分值的点全部并起来,\(\mbox{check}\)一下是否有超过\(K\)个集合就 ...
- CCCC L2 部落 L3社交集群
https://www.patest.cn/contests/gplt/L2-024 题解:部落是并查集模板题. 社交集群用并查集暴力有23分 坑:写了半天,发现自己并查集没怎么学明白,现在才搞懂: ...
- 天梯赛 L2-024. (并查集) 部落
题目链接 题目描述 在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查 ...
- BZOJ1821:[JSOI2010]部落划分(并查集,二分)
Description 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成 ...
- BZOJ 1821 部落划分(二分+并查集)
答案是具有单调性的. 因为最近的两个部落的距离为mid,所以要是有两个野人的距离<mid,则他们一定是一个部落的. 用并查集维护各联通块,如果最后的联通块个数>=k,那么mid还可以再小点 ...
- PAT 天梯赛 L2-024. 部落 【并查集】
题目链接 https://www.patest.cn/contests/gplt/L2-024 题意 给出 几个不同的圈子,然后 判断 有哪些人 是属于同一个部落的,或者理解为 ,有哪些人 是有关系的 ...
- [Bzoj1821][JSOI2010]Group 部落划分 Group(并查集)(二分答案)
1821: [JSOI2010]Group 部落划分 Group Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2949 Solved: 1392[S ...
- bzoj [JSOI2010]Group 部落划分 Group【二分+并查集】
我是zz吗这么简单都写错-- 一眼二分,然后判断的话是枚举点,然后计算这个点到已有联通块的最小距离,如果这个点到一些联通块的距离小于当前二分的val,则把这些联通块合并起来,这里用并查集维护,最后看这 ...
- CCCC L2-010. 排座位【并查集/分类讨论】
L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...
- P4047 [JSOI2010]部落划分 并查集
思路:并查集+生成树 提交:2次(虽然样例都没过但感觉是对的$QwQ$(判边少了一条)) 题解: 把所有点之间连边,然后$sort$一遍,从小往大加边,直到连第$n-k+1$条边(相当于是破话$k$个 ...
随机推荐
- 微信JS-SDK 示例
微信JS-SDK 示例 1.html部分 <!DOCTYPE html> <!-- saved from url=(0028){sh:$selfUrl} --> <htm ...
- PHP 代码优化建议
1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍.当然了,这个测试方法需要在十万级以上次执行,效果才明显.其实静态方法和非静态方法的效率 ...
- Python 建模步骤
#%% #载入数据 .查看相关信息 import pandas as pd import numpy as np from sklearn.preprocessing import LabelEnco ...
- gcc——预处理(预编译),编译,汇编,链接
一,预编译 操作步骤:gcc -E hello.c -o hello.i 主要作用: 处理关于 “#” 的指令 [1]删除#define,展开所有宏定义.例#define portnumber 333 ...
- LOJ 101 最大流(ISAP 模板)
开long long的最大流 #include<bits/stdc++.h> using namespace std; ;//点数的最大值 ;//边数的最大值 ; struct Edge ...
- Persona5
65536K Persona5 is a famous video game. In the game, you are going to build relationship with your ...
- 蓝桥--2n皇后问题(递归)--搬运+整理+注释
N皇后问题: #include <iostream> #include <cmath> using namespace std; int N; ];//用来存放算好的皇后位置. ...
- TPS限流
限流是高可用服务需要具备的能力之一 ,粗暴简单的就像我们之前做的并发数控制.好一点的有tps限流,可用令牌桶等算法实现.<亿级流量网站架构核心技术>一书P67限流详解也有讲.dubbo提供 ...
- dubbo与zk注册中心如何对接,如何做到服务自动发现
先看下consumer端发起调用时的链路流程: +---------------------------+ +---------------------------+ +--------------- ...
- webdriver高级应用- 改变一个页面对象的属性值
适用于一些无法操作的元素,可以直接改他的属性从而操作,代码如下: #encoding=utf-8 from selenium import webdriver import unittest impo ...