C - Rumor CodeForces - 893C

简介: C - Rumor CodeForces - 893C

一些话


拆解流程的时候没想到res 开long long,但写的时候想到了,一开始还庆幸自己这次这么机灵,结果debug一直de不出错误点,还是靠学长提醒才发现printf没有用%lld。。。


还有一开始用标准find然后tle,以后还是都用路径压缩find好了


自己总结的路径压缩find套路有瑕疵,一直没发现,也是靠学长指点才发现错误。。


流程

父节点数组

值数组

find注意此题卡路径压缩

标准un加一个值比较,小的做父节点


编号1-n,q次关系


fori = 1 I <= n


读入值


whileq--


读入a,b


un(a,b)


while外查询并查集数


cnt改为res ,res += v[i] 注意res要开long long


cout << res < < end; 注意res开long long 后printf参数要改成%lld


套路

1、路径压缩find

条件:并查集必用

形式一:

int find(int x){
    if(f[x] != x) f[x] = find(f[x];
    return f[x];
}


形式二:

1. int find(int x){
2. return f[x] == x ? x : f[x] = find(f[x]);
3. }


网络上还存在一种很长的形式三仅展示,不推荐使用:

int find(int x)
{
    int r=x;
    while(f[r]!=r)
    r=f[r];
    int i=x;
    int j;
    while(i!=r)
    {
        j=f[i];
        f[i]=r;
        i=j;
    }
    return r;
}

ac代码

#include <iostream>
using namespace std;
const int N = 1e5 + 10;
int f[N],v[N];
int find(int x){
  if(f[x] != x) f[x] = find(f[x]);
  return f[x];
}
void un(int a, int b){
  int fa = find(a);
  int fb = find(b);
  if(fa != fb){
    if(v[fa] > v[fb]) f[fa] = fb;
    else f[fb] = fa;
  }
}
int main(){
  int n,q;
  scanf("%d%d",&n,&q);
  for(int i = 1;i <= n;i++){
    f[i] = i;
    scanf("%d",&v[i]);
  }
  while(q--){
    int a, b;
    scanf("%d%d",&a,&b);
    un(a,b);
  }
  long long res = 0;
  for(int i = 1 ;i <= n;i++){
    if(f[i] == i) res += v[i];
  }
  printf("%lld",res);
  return 0;
}
目录
相关文章
|
8月前
|
前端开发 JavaScript Java
Java 学习路线规划及项目案例中的技术栈应用解析
内容包括:**Java 17核心特性**(如sealed class、record)与模块化开发;Spring Boot 3 + Spring Cloud微服务架构,涉及响应式编程(WebFlux)、多数据库持久化(JPA、R2DBC、MongoDB);云原生技术**如Docker、Kubernetes及CI/CD流程;性能优化(GraalVM Native Image、JVM调优);以及前后端分离开发(Vue 3、Spring Boot集成)。通过全栈电商平台项目实战,掌握从后端服务(用户、商品、订单)到前端应用(Vue 3、React Native)的全流程开发。
368 9
|
4月前
|
人工智能 监控 数据挖掘
智能体来了!企业降本增效新引擎,黎跃春谈AI智能体赋能管理创新
智能体正成为企业降本增效新引擎,黎跃春教授提出AI智能体不仅是工具,更是“数字化员工”。通过自动化办公、智能决策协同与多场景应用,助力企业实现管理透明化与运营效率提升。
|
算法 C语言 C++
【c++丨STL】list的使用
本文介绍了STL容器`list`的使用方法及其主要功能。`list`是一种双向链表结构,适用于频繁的插入和删除操作。文章详细讲解了`list`的构造函数、析构函数、赋值重载、迭代器、容量接口、元素访问接口、增删查改操作以及一些特有的操作接口如`splice`、`remove_if`、`unique`、`merge`、`sort`和`reverse`。通过示例代码,读者可以更好地理解如何使用这些接口。最后,作者总结了`list`的特点和适用场景,并预告了后续关于`list`模拟实现的文章。
435 7
|
12月前
|
人工智能 安全 API
这款流行 AI 工具被盗用挖取加密货币,这些隐患你需要知道
Docker 镜像被注入挖矿脚本并不是个别现象,而是一个需要引起重视的安全问题,本文向大家分享下 Higress 防范此类风险的相关经验。
467 89
|
C语言
【数据结构】双向带头循环链表(c语言)(附源码)
本文介绍了双向带头循环链表的概念和实现。双向带头循环链表具有三个关键点:双向、带头和循环。与单链表相比,它的头插、尾插、头删、尾删等操作的时间复杂度均为O(1),提高了运行效率。文章详细讲解了链表的结构定义、方法声明和实现,包括创建新节点、初始化、打印、判断是否为空、插入和删除节点等操作。最后提供了完整的代码示例。
471 0
|
存储 算法 Java
【DFS(深度优先搜索)详解】看这一篇就够啦
本文介绍了深度优先搜索(DFS)算法及其应用。DFS从某个顶点出发,深入探索图的每条路径,直到无法前进为止,然后回溯。文章详细解释了DFS的基本思想,并通过示例图展示了其执行过程。此外,文中还探讨了三种枚举方式:指数型枚举、排列型枚举和组合型枚举,并提供了具体的代码实现。最后,文章通过几道练习题帮助读者更好地理解和应用DFS算法。
10723 19
【DFS(深度优先搜索)详解】看这一篇就够啦
|
IDE 开发工具 Python
Python中IndentationError(缩进错误)
【5月更文挑战第13天】
1457 6
|
自然语言处理 安全 搜索推荐
外贸企业邮箱精选:国内三大优质邮件服务推荐
该内容介绍了国内三大外贸企业邮箱:Zoho Mail、腾讯企业邮箱和阿里企业邮箱。Zoho Mail以其简洁界面、自定义域名、深度集成办公套件和高效邮件管理脱颖而出,同时具备高级安全特性。腾讯企业邮箱强调个性化定制和多平台同步,而阿里企业邮箱则结合阿里云生态提供智能协同办公和高可用性服务。这三款邮箱均针对企业需求提供了不同的优势和功能。
739 0

热门文章

最新文章