社交集群 (并查集)

在这里插入图片描述

  • 题解 可以将人物也当做一个爱好方便绑定, 因为爱好上限是1000,
  • 第一个人是爱好1001
  • 第二个人是爱好1002
  • 。。。。
#include <bits/stdc++.h>
using namespace std;\
int bin[2050];
void init(){
	for(int i = 1; i <= 2010; i ++)
		bin[i] = i;
}
int find(int x){
	if(bin[x] == x)return x;
	return bin[x] = find(bin[x]);
}
void merge(int x, int y){
	int tx = find(x);
	int ty = find(y);
	if(tx!=ty)bin[ty] = tx;
}
int main()
{
	init();
	int t, n, a;
	char c;
	cin >> t;
	for(int i = 1; i <= t; i ++){
		cin >> n >> c;
		while(n --){
			cin >> a;
			merge(i+1000,a);
		}
	}
	int cnt = 0;
	for(int i = 1; i <= t; i ++){
		if(bin[i+1000] == i+1000)cnt ++;
	}
	cout << cnt << endl;
	int dp[1005];
	cnt = 0;
	for(int i = 1; i <= t; i ++){
		int sum = 0;
		if(bin[i+1000] == i+1000){
			for(int j = 1; j <= t; j ++){
				if(find(i+1000) == find(j+1000))sum ++;
			}
			dp[cnt++] = sum;
		}
	}
	sort(dp,dp+cnt);
	for(int i = cnt - 1; i >= 0; i --){
		if(i != cnt-1)cout << " ";
		cout << dp[i];	
	}
	return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Neo4j是一个图数据库,它将数据存储在节点和关系上。它的架构和工作原理可以分为以下几个方面: 1. 节点和关系模型:Neo4j的核心是节点和关系模型。每个节点都有一个唯一的标识符和一些属性,关系则连接两个节点并带有一个类型和一些属性。这种模型使得Neo4j非常适合处理复杂的关系数据。 2. 存储引擎:Neo4j使用了一种基于日志的存储引擎,称为“记录日志文件(WAL)”。它将写入磁盘的所有操作都记录在一个日志文件中,然后使用内存映射文件技术将数据加载到内存中进行查询。这种存储引擎可以提高读取性能,并允许在数据恢复时快速重放日志文件。 3. 索引和查询:Neo4j支持多种类型的索引,包括节点和关系属性的索引、全文索引和空间索引。查询语言是Cypher,它是一种基于图形的查询语言,类似于SQL。它可以轻松地处理复杂的关系查询,例如路径查询和社交网络分析。 4. 高可用性和复制:Neo4j具有内置的高可用性和复制功能。多个Neo4j实例可以组成一个集群,并通过Raft协议进行领导者选举和数据复制。这样,如果一个节点故障,其他节点可以接管它的工作并维护数据的一致性。 5. 扩展性:Neo4j可以通过水平扩展来提高性能和容量。它支持多个实例组成的集群,并使用分片和负载均衡来平衡负载。这种扩展性使得Neo4j可以处理非常大的图形数据集。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值