【团体程序设计天梯赛】L3-003社交集群

一个“社交集群”是指部分兴趣爱好相同的人的集合,看到这里就能看出来是一道并查集的题目,只不过要稍作修改。

题目中需求解的是每个集合的人数,我们可以在用并查集合并爱好的时候,维护集合的人数。具体地,初始f数组均为0,指此前没有出现过。

对每个人的爱好,我们判断第一个爱好x是否出现过,如果没有出现过,就令f[x]=x,指以爱好x为首领建立集合,且集合人数num[x]=1;如果出现过,用find(x)找到x所在集合的首领fx,使fx集合的数量num[fx]+1(同时令x=fx,便于后序合并);

依次读入第2、3、...、k个爱好,对第k个爱好y,判断爱好y是否出现过,如果没有出现过,直接令y合并到x集合中,数量不变(因为我们在合并同一个人的爱好);如果出现过,用find(y)找到y所在集合的首领fy,合并x与y的集合,令f[fy]=x,同时人数也要更新,num[x]+=num[fy]。

#include <iostream>
#include <algorithm>
#include <vector>
#define N 1010
using namespace std;

int n,f[N],num[N],k,x,y;//f记录首领,num记录人数
vector<int> ve;
int find(int x){//查找首领
    if(f[x]==x) return x;
    return x=find(f[x]);
}
int main(){
    scanf("%d",&n);//初始f数组为0
    while(n--){
        scanf("%d: %d",&k,&x);//读入第一个爱好
        k--;
        if(!f[x]) f[x]=x,num[x]=1;//
### 社交集群 Java 实现教程 社交集群通常指的是用于支持大规模在线社交网络服务的技术架构,这些技术能够处理大量的并发请求并提供高可用的服务。对于基于Java的应用来说,构建这样的系统可以依赖于多种技术和框架。 #### 使用Spring Cloud 和 Eureka 构建微服务体系下的社交应用集群 为了创建一个可靠的社交平台,采用微服务架构是一个不错的选择。这里推荐使用Spring Cloud套件配合Eureka作为服务发现组件来搭建社交应用程序的集群环境[^4]。 1. **引入必要的依赖** 在`pom.xml`文件中加入如下依赖项: ```xml <!-- Spring Boot Starter Parent --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- Dependencies --> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> ... </dependencies> ``` 2. **配置Eureka Server** 创建一个新的Spring Boot项目作为注册中心服务器,在application.yml里设置端口和其他参数: ```yaml server: port: 8761 eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ ``` 3. **开发具体业务逻辑模块** 接下来可以根据实际需求编写各个子系统的代码,比如用户管理、消息推送等功能,并让它们都向Eureka注册自己成为客户端成员之一。每个微服务都需要有自己的主类以及相应的YAML配置文件指定其连接到哪个地址上的Eureka实例去完成自动化的服务注册与查找过程。 4. **测试整个流程** 启动所有的服务之后就可以利用Postman或者其他API调试工具来进行接口调用了。确保不同机器间的通信正常工作并且负载均衡机制也已经生效。 ```java // 示例:定义FeignClient接口访问远程HTTP API @FeignClient(name="user-service", url="${service.url.user}") public interface UserServiceClient { @GetMapping("/users/{id}") User getUserById(@PathVariable("id") Long id); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值